gpt4 book ai didi

python - 如何根据另一列中的值是否包含在另一个数据帧的特定列中来设置一个数据帧的列值

转载 作者:行者123 更新时间:2023-12-01 07:15:35 25 4
gpt4 key购买 nike

如何根据数据帧的另一列中的值是否包含在另一个数据帧的特定列中来设置数据帧的一列的值。如果包含,则数字为 1,如果不包含,则为 0。例如:我有两个数据框:

a={'age':[22,38,26,62,198,27],'no':[1,2,3,4,5,6]} 


TableB= {'name': ['Braund', 'Cummings', 'Heikkinen', 'Allen','Mary','Celina','Roger'],
'age': [22,38,26,35,41,22,38],
'fare': [7.25, 71.83, 0 , 8.05,7,6.05,6],
'survived?': [False, True, True, False, True, False, True]}

我想检查a的'age'列中的每个数字是否都包含在TableB的'age'列中,如果包含,则在a中添加一列'Observer'并将值设置为1,如果没有,0。

I have tried this:

a['age'].isin(TableB['age'].set_value('Observer',1)

预期结果如下,但我的结果是a的observer列的值全部为1。

a={'age':[22,38,26,62,198,27],'no':[1,2,3,4,5,6],'observer':[1,1,1,0,0,0]}

最佳答案

a={'age':[22,38,26,62,198,27],'no':[1,2,3,4,5,6]} 
a = pd.DataFrame(a)
print (a)
age no
0 22 1
1 38 2
2 26 3
3 62 4
4 198 5
5 27 6

TableB= {'name': ['Braund', 'Cummings', 'Heikkinen', 'Allen','Mary','Celina','Roger'],
'age': [22,38,26,35,41,22,38],
'fare': [7.25, 71.83, 0 , 8.05,7,6.05,6],
'survived?': [False, True, True, False, True, False, True]}

TableB = pd.DataFrame(TableB)
print (TableB)
name age fare survived?
0 Braund 22 7.25 False
1 Cummings 38 71.83 True
2 Heikkinen 26 0.00 True
3 Allen 35 8.05 False
4 Mary 41 7.00 True
5 Celina 22 6.05 False
6 Roger 38 6.00 True

您可以将 bool 掩码转换为整数,以将 True/False 映射到 1/0:

a['observer'] = a['age'].isin(TableB['age']).astype(int)

替代解决方案是使用numpy.where :

a['observer'] = np.where(a['age'].isin(TableB['age']), 1, 0)
print (a)
age no observer
0 22 1 1
1 38 2 1
2 26 3 1
3 62 4 0
4 198 5 0
5 27 6 0

如果使用字典,则使用带有 if-else 的列表理解,并通过 in 测试成员资格:

a={'age':[22,38,26,62,198,27],'no':[1,2,3,4,5,6]} 

TableB= {'name': ['Braund', 'Cummings', 'Heikkinen', 'Allen','Mary','Celina','Roger'],
'age': [22,38,26,35,41,22,38],
'fare': [7.25, 71.83, 0 , 8.05,7,6.05,6],
'survived?': [False, True, True, False, True, False, True]}


a['observer'] = [1 if x in TableB['age'] else 0 for x in a['age']]
print (a)
{'age': [22, 38, 26, 62, 198, 27], 'no': [1, 2, 3, 4, 5, 6], 'observer': [1, 1, 1, 0, 0, 0]}

关于python - 如何根据另一列中的值是否包含在另一个数据帧的特定列中来设置一个数据帧的列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57986006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com