如何新增聚合数据列
我想在 Dataframe 中创建03个新列
第01列:唯一列表
在cfop_code
唯一值的 Dataframe 中为每个key
创建新列
第02列:唯一计数
用于检查unique_list中显示的唯一值数量的列
第03列:非唯一计数
用于检查unique_list中显示的非唯一值的数量的列
示例_df
| | 键|积|cfop_代码|
| - ------|- ------|- ------|- ------|
| 无|小行星1234567890|产品a|小行星2551|
| 1个|小行星1234567890|产品b|小行星2551|
| 第二章|小行星1234567890|产品c|小行星3551|
| 三个|小行星1234567890|产品a|小行星2551|
| 四个|小行星1234567890|产品b|小行星2551|
| 五个|小行星1234567890|产品c|小行星2407|
预期结果
| | 键|积|cfop_代码|唯一列表|唯一计数|非唯一计数|
| - ------|- ------|- ------|- ------|- ------|- ------|- ------|
| 无|小行星1234567890|产品a|小行星2551|二二五一、三五五一|第二章|三个|
| 1个|小行星1234567890|产品b|小行星2551|二二五一、三五五一|第二章|三个|
| 第二章|小行星1234567890|产品c|小行星3551|二二五一、三五五一|第二章|三个|
| 三个|小行星1234567890|产品a|小行星2551|小行星2251|1个|1个|
| 四个|小行星1234567890|产品b|小行星2551|小行星2407、2551|第二章|第二章|
| 五个|小行星1234567890|产品c|小行星2407|小行星2407、2551|第二章|第二章|
我所尝试的
创建唯一值列表
df.groupby('key')["cfop"].unique()
key
12345678901234567890 [2551, 3551]
12345678901234567895 [2551]
12345678901234567897 [2551, 2407]
Name: cfop, dtype: object
获取非唯一值计数
df.groupby("key").agg(**{"unique_values": pd.NamedAgg(column='cfop', aggfunc="size")}).reset_index()
key unique_values
0 12345678901234567890 3
1 12345678901234567895 1
2 12345678901234567897 2
将计数唯一值获取到数据框中
df.groupby("key").agg(**{"unique_values": pd.NamedAgg(column='cfop', aggfunc="nunique")}).reset_index()
key unique_values
0 12345678901234567890 2
1 12345678901234567895 1
2 12345678901234567897 2
但添加新列失败
一个三个三个一个
2条答案
按热度按时间rnmwe5a21#
试试看:
您尝试的问题在于:
返回一个DataFrame。您尝试将整个DataFrame分配给一个新列,但失败了。
gmol16392#
您可以在group和agg之后进行合并,例如:
输出: