![](/img/trans.png)
[英]Python Pandas Dataframe: add new column based on existing column, which contains lists of lists
[英]new dataframe based on column from existing python pandas
我正在尝试根据列类别(A、B 和 C)中的分类值从现有数据帧 df 创建新的数据帧 df_A、df_B 和 df_C。
这不起作用
df_A = {n: df.ix[rows]
for n, rows in enumerate(df.groupby('Category').groups)}
在这里我收到错误“关键错误:A”
(注:A是其中一类)
这也不起作用
df_A = np.where(df['Category']=='A')).copy()
在这里我得到错误:“语法错误”
最后,这不起作用
df_A = np.where(raw[raw['Category']=='A']).copy()
“AttributeError:‘tuple’对象没有‘copy’属性”
谢谢你
似乎您需要首先进行boolean indexing
因为Category
是列,而不是index
如果需要字典):
df2 = {n: data[ data['Category'] == rows]
for n, rows in enumerate(data.groupby('Category').groups)}
或尝试删除groups
:
df2 = {n: rows[1] for n, rows in enumerate(data.groupby('Category'))}
样本:
data = pd.DataFrame({'Category':['A','A','D'],
'B':[4,5,6],
'C':[7,8,9]})
print (data)
B C Category
0 4 7 A
1 5 8 A
2 6 9 D
df2 = {n: rows[1] for n, rows in enumerate(data.groupby('Category'))}
print (df2)
{0: B C Category
0 4 7 A
1 5 8 A, 1: B C Category
2 6 9 D}
df2 = {n: data[ data['Category'] == rows]
for n, rows in enumerate(data.groupby('Category').groups)}
print (df2)
{0: B C Category
0 4 7 A
1 5 8 A, 1: B C Category
2 6 9 D}
没有groupby
解决方案
df2 = {n: data[data['Category'] == rows] for n, rows in enumerate(data['Category'].unique())}
print (df2)
{0: B C Category
0 4 7 A
1 5 8 A, 1: B C Category
2 6 9 D}
print (df2[0])
B C Category
0 4 7 A
1 5 8 A
但是如果需要按Category
值选择DataFrame
的字典:
dfs = {n: rows for n, rows in data.groupby('Category')}
print (dfs)
{'A': B C Category
0 4 7 A
1 5 8 A, 'D': B C Category
2 6 9 D}
print (dfs['A'])
B C Category
0 4 7 A
1 5 8 A
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.