考虑这个数据框:
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)
.
现在我想添加新列1
如果行的 C 列值位于firsts
否则将会是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 |
如果有人解释为什么我的解决方案是错误的以及这个问题的实际解决方案是什么,我将不胜感激?