如果值“2235”位于“年龄”列中,则应在新列中将“名称”列中的关联组设置为全部 true。
我的测试数据框是:
import pandas as pd
# intialise data of lists.
data = {'PERNR':[111111, 111111, 111111, 111111, 111111, 111111, 111111, 222222, 222222, 222222, 222222, 222222, 222222],
'Name':['11.11.2024', '11.11.2024', '11.11.2024', '11.11.2024', '14.11.2024', '14.11.2024', '14.11.2024',
'20.11.2024', '20.11.2024', '20.11.2024', '11.11.2024', '11.11.2024', '11.11.2024'],
'Age':['', '', '', '', '', '2035', '', '', '', '', '', '', '2035']}
df = pd.DataFrame(data)
我尝试过这个解决方案:
df['new'] = df['Age'].eq('2035').groupby(df['Name']).transform('any')
Out[400]:
PERNR Name Age new
0 111111 11.11.2024 True
1 111111 11.11.2024 True
2 111111 11.11.2024 True
3 111111 11.11.2024 True
4 111111 14.11.2024 True
5 111111 14.11.2024 2035 True
6 111111 14.11.2024 True
7 222222 20.11.2024 False
8 222222 20.11.2024 False
9 222222 20.11.2024 False
10 222222 11.11.2024 True
11 222222 11.11.2024 True
12 222222 11.11.2024 2035 True
But it should be:
Out[400]:
PERNR Name Age new
0 111111 11.11.2024 False
1 111111 11.11.2024 False
2 111111 11.11.2024 False
3 111111 11.11.2024 False
4 111111 14.11.2024 True
5 111111 14.11.2024 2035 True
6 111111 14.11.2024 True
7 222222 20.11.2024 False
8 222222 20.11.2024 False
9 222222 20.11.2024 False
10 222222 11.11.2024 True
11 222222 11.11.2024 True
12 222222 11.11.2024 2035 True
经过多次尝试,我没有找到解决方案。
感谢您的帮助
您应该按 PERNR 和名称列进行分组:
df['new'] = df['Age'].eq('2035').groupby([df["PERNR"], df["Name"]]).transform('any')