Pandas 在数据帧中使用group和sum时出现密钥错误
我想使用groupby和csv文件求和Pandas 在数据帧中使用group和sum时出现密钥错误,pandas,dataframe,conditional-statements,Pandas,Dataframe,Conditional Statements,我想使用groupby和csv文件求和 a b c d 1111 0.1 1 1 1111 0 1 0 2222 0.2 1 1 1111 0.2 2 1 2222 1 1 1111 0.3 2 0 3333 0.4 1 1 3333 0.5 2 1 1111 0.6 2 1 e:#如果b=0.2,则将a列和c列之和分组 g:#如果d=1,b>=0.2,g是c的和 h:#如
a b c d
1111 0.1 1 1
1111 0 1 0
2222 0.2 1 1
1111 0.2 2 1
2222 1 1
1111 0.3 2 0
3333 0.4 1 1
3333 0.5 2 1
1111 0.6 2 1
e:#如果b<0.2,则将a列和c列之和分组
f:#如果b>=0.2,则将a列和c列之和分组
g:#如果d=1,b>=0.2,g是c的和
h:#如果d=0且b<0.2,h是c的和
预期产出:
e f g h
1111 2 6 4 1
2222 1 1
3333 3 3
我尝试:
df1 = df[(df['d'] == 1) & (df['b'] >= 0.2)]
df1.groupby('a')['c'].sum()
但是,我在一个大文件中发现了密钥错误:
pandas.index.IndexEngine.get_loc,pandas.hastable.PobjectHashTable.get_a列中的项
也许你可以尝试不同的方法: 首先创建条件列-
e
到h
,然后使用列c
的值填充此掩码。最后用途:
我试着整理帖子,但不知道如何布置。谢谢你的编辑。对于代码,我尝试使用groupb和sum,但在a列有一个键错误。有些事情是关于熊猫哈希表的……你应该考虑把错误放进去。我用DF1= DF[(DF[De'']=1)和(DF[[ B′]>0.2)],DF1。但是,我在一个大文件中发现了关键错误:pandas.index.IndexEngine.get_loc,pandas.hastable.PobjectHashTable.get_项在列a中。。。不知道为什么。。。
df['e'] = df['b'] < 0.2
df['f'] = df['b'] >= 0.2
df['g'] = (df['d'] == 1) & (df['b'] >= 0.2)
df['h'] = (df['d'] == 0) & (df['b'] < 0.2)
print df
a b c d e f g h
0 1111 0.1 1 1 True False False False
1 1111 0.0 1 0 True False False True
2 2222 0.2 1 1 False True True False
3 1111 0.2 2 1 False True True False
4 2222 NaN 1 1 False False False False
5 1111 0.3 2 0 False True False False
6 3333 0.4 1 1 False True True False
7 3333 0.5 2 1 False True True False
8 1111 0.6 2 1 False True True False
df.loc[:, ['e','f','g','h']]= df.loc[:, ['e','f','g','h']].mul(df.c, axis=0)
print df
a b c d e f g h
0 1111 0.1 1 1 1 0 0 0
1 1111 0.0 1 0 1 0 0 1
2 2222 0.2 1 1 0 1 1 0
3 1111 0.2 2 1 0 2 2 0
4 2222 NaN 1 1 0 0 0 0
5 1111 0.3 2 0 0 2 0 0
6 3333 0.4 1 1 0 1 1 0
7 3333 0.5 2 1 0 2 2 0
8 1111 0.6 2 1 0 2 2 0
df1 = df.groupby('a').sum()
print df1[['e','f','g','h']]
e f g h
a
1111 2 6 4 1
2222 0 1 1 0
3333 0 3 3 0