是否可以在不首先创建列表的情况下将Series添加到DataFrame的行?
machine-learning
pandas
python
16
0

我有一些数据要整理成PandasDataFrame 。我试图使每一行成为一个Series并将其附加到DataFrame 。我找到了一种方法,可以将Series附加到一个空list ,然后将Series list转换为DataFrame

例如DF = DataFrame([series1,series2],columns=series1.index)

listDataFrame步骤似乎过多。我在这里签出几个例子上,但没有任何的Series保留了Index从标签Series使用它们作为列标签。

我很长的路要走,列是id_names,行是type_names: 在此处输入图片说明

是否可以在不首先创建列表的情况下将Series添加到DataFrame的行?

#!/usr/bin/python

DF = DataFrame()
for sample,data in D_sample_data.items():
    SR_row = pd.Series(data.D_key_value)
    DF.append(SR_row)
DF.head()

TypeError: Can only append a Series if ignore_index=True or if the Series has a name

然后我尝试

DF = DataFrame()
for sample,data in D_sample_data.items():
    SR_row = pd.Series(data.D_key_value,name=sample)
    DF.append(SR_row)
DF.head()

空数据框

尝试在pandas数据框中插入一行仍然得到一个空数据框:/

我正在尝试让Series成为行,其中Series的索引成为DataFrame的列标签

参考资料:
Stack Overflow
收藏
评论
共 3 个回答
高赞 时间 活跃

也许更简单的方法是将添加pandas.Seriespandas.DataFrameignore_index=True参数DataFrame.append()范例-

DF = DataFrame()
for sample,data in D_sample_data.items():
    SR_row = pd.Series(data.D_key_value)
    DF = DF.append(SR_row,ignore_index=True)

演示-

In [1]: import pandas as pd

In [2]: df = pd.DataFrame([[1,2],[3,4]],columns=['A','B'])

In [3]: df
Out[3]:
   A  B
0  1  2
1  3  4

In [5]: s = pd.Series([5,6],index=['A','B'])

In [6]: s
Out[6]:
A    5
B    6
dtype: int64

In [36]: df.append(s,ignore_index=True)
Out[36]:
   A  B
0  1  2
1  3  4
2  5  6

代码中的另一个问题是DataFrame.append()不在原位,它返回附加的数据帧,您需要将其分配回原始数据帧才能正常工作。范例-

DF = DF.append(SR_row,ignore_index=True)

为了保留标签,您可以使用解决方案为系列添加名称,并将附加的DataFrame分配回DF 。范例-

DF = DataFrame()
for sample,data in D_sample_data.items():
    SR_row = pd.Series(data.D_key_value,name=sample)
    DF = DF.append(SR_row)
DF.head()
收藏
评论

这样的事情可能会起作用...

mydf.loc['newindex'] = myseries

这是我使用它的示例...

stats = df[['bp_prob', 'ICD9_prob', 'meds_prob', 'regex_prob']].describe()

stats
Out[32]: 
          bp_prob   ICD9_prob   meds_prob  regex_prob
count  171.000000  171.000000  171.000000  171.000000
mean     0.179946    0.059071    0.067020    0.126812
std      0.271546    0.142681    0.152560    0.207014
min      0.000000    0.000000    0.000000    0.000000
25%      0.000000    0.000000    0.000000    0.000000
50%      0.000000    0.000000    0.000000    0.013116
75%      0.309019    0.065248    0.066667    0.192954
max      1.000000    1.000000    1.000000    1.000000

medians = df[['bp_prob', 'ICD9_prob', 'meds_prob', 'regex_prob']].median()

stats.loc['median'] = medians

stats
Out[36]: 
           bp_prob   ICD9_prob   meds_prob  regex_prob
count   171.000000  171.000000  171.000000  171.000000
mean      0.179946    0.059071    0.067020    0.126812
std       0.271546    0.142681    0.152560    0.207014
min       0.000000    0.000000    0.000000    0.000000
25%       0.000000    0.000000    0.000000    0.000000
50%       0.000000    0.000000    0.000000    0.013116
75%       0.309019    0.065248    0.066667    0.192954
max       1.000000    1.000000    1.000000    1.000000
median    0.000000    0.000000    0.000000    0.013116
收藏
评论

DataFrame.append不会在适当位置修改DataFrame。如果要将其重新分配回原始变量,则需要执行df = df.append(...)

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题