【发布时间】:2020-01-20 19:10:45
【问题描述】:
我想在基于 col1 的 pandas groupby 之后将 col2 的 value_counts 中的值返回到原始数据帧。
即我有...
col1 col2
0 1111 A
1 1111 B
2 1111 B
3 1111 B
4 1111 C
5 2222 A
6 2222 B
7 2222 C
8 2222 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
我可以使用 groupby 获取 col3 的值,然后将 col2 值传递给 value_counts,但我不知道如何将其返回到数据框中。
例子:
d1 = {'col1': ['1111', '1111', '1111', '1111', '1111', '2222', '2222', '2222', '2222'],
'col2': ['A', 'B', 'B', 'B', 'C', 'A', 'B', 'C', 'C']}
df1 = pd.DataFrame(data=d1)
d2 = {'col1': ['1111', '1111', '1111', '1111', '1111', '2222', '2222', '2222', '2222'],
'col2': ['A', 'B', 'B', 'B', 'C', 'A', 'B', 'C', 'C'],
'col3': [1, 3, 3, 3, 1, 1, 1, 2, 2]}
df2 = pd.DataFrame(data=d2)
print(df1)
print(df2)
counts = df1.groupby('col1').apply(lambda x: x.col2.value_counts()[x.col2])
print(counts)
【问题讨论】: