Pandas 在数据帧中使用group和sum时出现密钥错误

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:#如

我想使用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列之和分组

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