python - 在另一列中搜索列值并将找到的行的下一列中的值分配给另一列
问题描述
我正在使用 Pandas 并试图用另一列中的值填充一列,其中另一列包含与特定列中相同的值。
例子:
>>> df = pd.DataFrame({'StringToCheck': ['10T','125T', '',''],
'FromNumber' :['','','',''],
'ToNumber' : ['','','',''],
'CheckStringHere': ['AAA_ER', 'FGGR_DBC', '10T', '125T'],
'AssociatedValue1': ['','','56','16'],
'AssociatedValue2': ['','','58','24']})
>>> df
StringToCheck FromNumber ToNumber CheckStringHere AssociatedValue1 AssociatedValue2
0 10T AAA_ER
1 125T FGGR_DBC
2 10T 56 58
3 125T 16 24
StringToCheck
我想在列内搜索每个值,并将找到的行上CheckStringHere
的值分配给列,但在值所在的行上。AssociatedValue1
FromNumber
StringToCheck
我努力了
>>> df['FromNumber'] = df[df['CheckStringHere'].isin(df['StringToCheck'])]['AssociatedValue1']
>>> df
StringToCheck FromNumber ToNumber CheckStringHere AssociatedValue1 AssociatedValue2
0 10T NaN AAA_ER
1 125T NaN FGGR_DBC
2 56 10T 56 58
3 16 125T 16 24
如您所见,值已添加到FromNumber
列中,但是在从中StringToCheck
找到值的行中CheckStringHere
,我需要
StringToCheck FromNumber ToNumber CheckStringHere AssociatedValue1 AssociatedValue2
0 10T 56 AAA_ER
1 125T 16 FGGR_DBC
2 10T 56 58
3 125T 16 24
接下来,如果可以同时从AssociatedValue2
到ToNumber
列中获取值,那将是一种真正的享受。
PS
我不知道这个问题有什么问题,我研究并尝试了很多解决方案,解释了我的方法以及什么不起作用。反对这样的问题绝对是错误的。
解决方案
您可以尝试从列创建字典['CheckStringHere','AssociatedValue1']
并替换列中的值StringToCheck
:
d = dict(df[['CheckStringHere','AssociatedValue1']].to_numpy())
df['FromNumber'] = df['StringToCheck'].replace(d)
#or df['FromNumber'] = df['StringToCheck'].map(d).fillna(df['FromNumber'])
print(df)
StringToCheck FromNumber ToNumber CheckStringHere AssociatedValue1 \
0 10T 56 AAA_ER
1 125T 16 FGGR_DBC
2 10T 56
3 125T 16
AssociatedValue2
0
1
2 58
3 24
推荐阅读
- c# - 修改请求头隐藏自动测试标志
- vb6 - 在Vb6中从右到左动画帧的宽度
- php - 如何显示两个表的数据
- php - 如何获取 Twitter 关注者列表(或任何其他 Twitter 查询)
- java - 如何修复VSCode(Java)中的“未解决的编译问题:类型字符串不可见”错误
- validation - 如何使用 Spring Boot 验证和清理 HTTP Get?
- java - 如何限制 Hibernate 仅在涉及多个实体的 Criteria API 中的根实体中使用列生成 SQL 查询
- laravel - Laravel 验证链接与会话
- javascript - 滑块未正确加载
- kubernetes - Istio - 多个路由规则的性能?