我试图根据原始数据帧的groupby向数据帧添加一个新列,并根据groupby的结果指定三个值中的一个
也就是说,在下面的df中,我想添加第四列,以显示我是否有太多的“a”,太多的“C”,或者刚好是正确的数量
col1 col2 col3
0 1111 A 1
1 1111 B 3
2 1111 B 3
3 1111 B 3
4 1111 C 1
5 2222 A 1
6 2222 B 1
7 2222 C 2
8 2222 C 2
9 3333 A 2
10 3333 A 2
11 3333 B 1
12 3333 C 1
变成
col1 col2 col3 col4
0 1111 A 1 OK
1 1111 B 3 OK
2 1111 B 3 OK
3 1111 B 3 OK
4 1111 C 1 OK
5 2222 A 1 >C
6 2222 B 1 >C
7 2222 C 2 >C
8 2222 C 2 >C
9 3333 A 2 >A
10 3333 A 2 >A
11 3333 B 1 >A
12 3333 C 1 >A
我曾考虑使用transform,但它返回的是序列,我认为在本例中,我需要检查两个不同的列
例如:
d1 = {'col1': ['1111', '1111', '1111', '1111', '1111', '2222', '2222', '2222', '2222', '3333', '3333', '3333', '3333'],
'col2': ['A', 'B', 'B', 'B', 'C', 'A', 'B', 'C', 'C', 'A', 'A', 'B', 'C'],
'col3': [1, 3, 3, 3, 1, 1, 1, 2, 2, 2, 2, 1, 1]}
df1 = pd.DataFrame(data=d1)
d2 = {'col1': ['1111', '1111', '1111', '1111', '1111', '2222', '2222', '2222', '2222', '3333', '3333', '3333', '3333'],
'col2': ['A', 'B', 'B', 'B', 'C', 'A', 'B', 'C', 'C', 'A', 'A', 'B', 'C'],
'col3': [1, 3, 3, 3, 1, 1, 1, 2, 2, 2, 2, 1, 1],
'col4': ['OK', 'OK', 'OK', 'OK', 'OK', '>C', '>C', '>C', '>C', '>A', '>A', '>A', '>A']}
df2 = pd.DataFrame(data=d2)
print(df1)
print(df2)
据我所知,尝试以下方法:
< ^ ^ ^{解决方案:
输出:
其他详细信息:其中
m
是col2
值w.r.tcol1
值的计数:相关问题 更多 >
编程相关推荐