【发布时间】:2016-02-14 11:48:12
【问题描述】:
我有一个包含“a”和“b”列的 DataFrame。我想创建一个新列,它是这条 SQL 语句的结果。
df['c'] = Select 'a' , count (case when 'b' ==1 then 'a' else null end) from df group by 'a'
如何使用 Pandas 实现相同的目标?
df = pd.DataFrame({'a':['a','a','b','a','b'], 'b' : [1,0,0,1,1]})
df = a b
0 a 1
1 a 0
2 b 0
3 a 1
4 b 1
我在下面试过
df['c'] = df.groupby('a').apply(lambda x : x[x['b']==1]['a'].count()).reset_index().ix[:,-1]
产生了这些不正确的结果:
a b c
0 a 1 2
1 a 0 0
2 b 0 NaN
3 a 1 NaN
4 b 1 NaN
虽然我期待[2,NAN,NaN,2,1]
提前感谢所有帮助和指导!
【问题讨论】:
标签: pandas lambda group-by transform calculated-columns