繁体   English   中英

基于现有 python pandas 列的新数据框

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM