【发布时间】:2017-05-27 15:04:49
【问题描述】:
考虑这个数据框:
df = pd.DataFrame({'A': [1, 1, 2, 2, 3, 3],
'B': [10, 15, 20, 25, 30,35],
'C': [100, 150, 200, 250, 300, 350]})
这是获取 C 列值的代码,它是每组的第一行(A 列):
firsts = df.groupby('A').first()['C']
所以首先是:(100, 200, 300)。
现在我想添加新列,如果行的 C 列的值在 firsts 中,它将是 1,否则它将是 0。
| A | B | C | D |
|---|---|---|---|
| 1 | 10 | 100 | 1 |
| 1 | 15 | 150 | 0 |
| 2 | 20 | 200 | 1 |
| 2 | 25 | 250 | 0 |
| 3 | 30 | 300 | 1 |
| 3 | 35 | 350 | 0 |
我用过这个:
df['D'] = df['C'].apply(lambda x: 1 if x in firsts else 0)
但是输出是:
| A | B | C | D |
|---|---|---|---|
| 1 | 10 | 100 | 0 |
| 1 | 15 | 150 | 0 |
| 2 | 20 | 200 | 0 |
| 2 | 25 | 250 | 0 |
| 3 | 30 | 300 | 0 |
| 3 | 35 | 350 | 0 |
如果有人解释为什么我的解决方案是错误的以及这个问题的实际解决方案是什么,我将不胜感激?
【问题讨论】: