【发布时间】:2020-12-13 12:44:07
【问题描述】:
我需要将 df1['numsearch'] 列中的值搜索到 df2['Numbers'] 的列表中。如果数字在这些列表中,那么我想将 df2['Score'] 列中的值添加到 df1。请参阅下面的所需输出。
df1 = pd.DataFrame(
{'Day':['M','Tu','W','Th','Fr','Sa','Su'],
'numsearch':['1','20','14','99','19','6','101']
})
df2 = pd.DataFrame(
{'Letters':['a','b','c','d'],
'Numbers':[['1','2','3','4'],['5','6','7','8'],['10','20','30','40'],['11','12','13','14']],
'Score': ['1.1','2.2','3.3','4.4']})
desired output
Day numsearch Score
0 M 1 1.1
1 Tu 20 3.3
2 W 4 4.4
3 Th 99 "No score"
4 Fr 19 "No score"
5 Sa 6 2.2
6 Su 101 "No score"
我编写了一个处理测试数据的 for 循环。
scores = []
for s,ns in enumerate(ppr_data['SN']):
match = ''
for k,q in enumerate(jcr_data['All_ISSNs']):
if ns in q:
scores.append(jcr_data['Journal Impact Factor'][k])
match = 1
else:
continue
if match == "":
scores.append('No score')
match = ""
df1['Score'] = np.array(scores)
在我的小测试中,但上面的代码可以工作,但是在处理较大的数据文件时,它会创建重复项。所以这显然不是最好的方法。
我敢肯定还有更适合 pandas 的代码行以 .fillna("No score") 结尾。
我尝试使用 loc 语句,但我一直在搜索包含列表的列中的一个数据框的值。
谁能解释一下?
【问题讨论】:
标签: python-3.x pandas list dataframe