Python 3.x Dataframe根据其他列查找列中的重复值,然后向其中添加标签
给定以下数据帧:Python 3.x Dataframe根据其他列查找列中的重复值,然后向其中添加标签,python-3.x,pandas,duplicates,conditional-statements,unique,Python 3.x,Pandas,Duplicates,Conditional Statements,Unique,给定以下数据帧: import pandas as pd d=pd.DataFrame({'ID':[1,1,1,1,2,2,2,2], 'values':['a','b','a','a','a','a','b','b']}) d ID values 0 1 a 1 1 b 2 1 a 3 1 a 4 2 a 5 2 a 6 2 b 7 2 b
import pandas as pd
d=pd.DataFrame({'ID':[1,1,1,1,2,2,2,2],
'values':['a','b','a','a','a','a','b','b']})
d
ID values
0 1 a
1 1 b
2 1 a
3 1 a
4 2 a
5 2 a
6 2 b
7 2 b
我想得到的数据是:
ID values count label(values + ID)
0 1 a 3 a11
1 1 b 1 b11
2 1 a 3 a12
3 1 a 3 a13
4 2 a 2 a21
5 2 a 2 a22
6 2 b 2 b21
7 2 b 2 b22
非常感谢!谢谢 似乎您需要
转换
计数
+计数
d['count']=d.groupby(['ID','values'])['values'].transform('count')
d['label']=d['values']+d.ID.astype(str)+d.groupby(['ID','values']).cumcount().add(1).astype(str)
d
Out[511]:
ID values count label
0 1 a 3 a11
1 1 b 1 b11
2 1 a 3 a12
3 1 a 3 a13
4 2 a 2 a21
5 2 a 2 a22
6 2 b 2 b21
7 2 b 2 b22
似乎您需要
转换
计数
+cumcount
d['count']=d.groupby(['ID','values'])['values'].transform('count')
d['label']=d['values']+d.ID.astype(str)+d.groupby(['ID','values']).cumcount().add(1).astype(str)
d
Out[511]:
ID values count label
0 1 a 3 a11
1 1 b 1 b11
2 1 a 3 a12
3 1 a 3 a13
4 2 a 2 a21
5 2 a 2 a22
6 2 b 2 b21
7 2 b 2 b22
您想按
ID
和值进行分组。在每个组中,您感兴趣的是两件事:组中成员的数量(count
)和组中出现的次数(order
):
然后,您可以使用sum
将它们的字符串值与值连接起来:
df['label'] = df[['values', 'ID', 'order']].astype(str).sum(axis=1)
这导致:
ID values order count label
0 1 a 1 3 a11
1 1 b 1 1 b11
2 1 a 2 3 a12
3 1 a 3 3 a13
4 2 a 1 2 a21
5 2 a 2 2 a22
6 2 b 1 2 b21
7 2 b 2 2 b22
您想按ID
和值进行分组。在每个组中,您感兴趣的是两件事:组中成员的数量(count
)和组中出现的次数(order
):
然后,您可以使用sum
将它们的字符串值与值连接起来:
df['label'] = df[['values', 'ID', 'order']].astype(str).sum(axis=1)
这导致:
ID values order count label
0 1 a 1 3 a11
1 1 b 1 1 b11
2 1 a 2 3 a12
3 1 a 3 3 a13
4 2 a 1 2 a21
5 2 a 2 2 a22
6 2 b 1 2 b21
7 2 b 2 2 b22
如何实现这样的功能?非常感谢你!!!如何实现这样的功能?非常感谢你!!!