O.r*_*rka 35 python machine-learning series dataframe pandas
我有一些数据我试图组织成一个DataFrame在Pandas.我试图让每一行成为一个Series并将其附加到DataFrame.我发现了一种通过附加去做Series一个空list,然后转换list的Series到DataFrame
例如 DF = DataFrame([series1,series2],columns=series1.index)
这list要DataFrame一步似乎过度.我在这里查看了几个例子,但是没有Series保留Index标签Series来将它们用作列标签.
是否可以在不先创建列表的情况下将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
Run Code Online (Sandbox Code Playgroud)
然后我试了一下
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()
Run Code Online (Sandbox Code Playgroud)
空DataFrame
尝试向pandas dataframe插入一行 仍然获得一个空的数据帧:/
我试图将Series作为行,其中Series的索引成为DataFrame的列标签
Ana*_*mar 55
也许一个更简单的方法是添加pandas.Series入pandas.DataFrame与ignore_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)
Run Code Online (Sandbox Code Playgroud)
演示 -
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
Run Code Online (Sandbox Code Playgroud)
您的代码中的另一个问题是它DataFrame.append()不是就地,它返回附加的数据帧,您需要将其分配回原始数据帧才能使其正常工作.示例 -
DF = DF.append(SR_row,ignore_index=True)
Run Code Online (Sandbox Code Playgroud)
要保留标签,可以使用解决方案包含系列的名称以及将附加的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()
Run Code Online (Sandbox Code Playgroud)
小智 17
append 已弃用,因此最好的选择是 to_frame().T
df1 = pd.DataFrame({'name':['john','mark'],'job':['manager','salesman'],'age':[43,23]})
ser1 = df1.iloc[-1]
pd.concat([df1,ser1.to_frame().T],ignore_index=True)
name job age
0 john manager 43
1 mark salesman 23
2 mark salesman 23
Run Code Online (Sandbox Code Playgroud)
Bre*_*arn 13
DataFrame.append不会修改DataFrame.df = df.append(...)如果要将其重新分配给原始变量,则需要执行此操作.
像这样的东西可以工作......
mydf.loc['newindex'] = myseries
Run Code Online (Sandbox Code Playgroud)
这是我使用它的一个例子......
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
Run Code Online (Sandbox Code Playgroud)
将系列转换为数据帧并转置,然后正常追加。
srs = srs.to_frame().T
df = df.append(srs)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
66367 次 |
| 最近记录: |