gpt4 book ai didi

python - 检查一个字符串是否包含来自不同数据框的另一个字符串 - Python

转载 作者:太空宇宙 更新时间:2023-11-03 11:38:19 25 4
gpt4 key购买 nike

我有两个具有不同列和大小的数据框。

第一个有一些列,其中一个是字符串字段(第 1 列)。第二个数据框有 2 列,一个是字符串字段(第 4 列),两个单词用逗号分隔,另一个是整数字段(第 5 列)。

我需要验证 Dataframe 1 中的第 1 列是否包含 Dataframe 2 第 4 列中的单词,并用 Dataframe 2 中的相应信息填写 Dataframe 1。

示例:

df1
column 1 column 2 column 3
0 bla bla sample1 bla bla sample2 a f
1 bla bla sample1 bla bla sample5 b g
2 bla bla sample3 bla bla sample4 c h
3 bla bla sample8 bla bla sample7 d i
4 bla bla sample1 bla bla sample2 e j

df2
column 4 column 5
0 ('sample1', 'sample2'), 50
1 ('sample3', 'sample4'), 35
2 ('sample1', 'sample5') 18

我需要输出:

Output:
df1
column 1 column 2 column 3 column 4 column 5
0 bla bla sample1 bla bla sample2 a f ('sample1', 'sample2') 50
1 bla bla sample1 bla bla sample5 b g ('sample1', 'sample5') 18
2 bla bla sample3 bla bla sample4 c h ('sample3', 'sample4') 35
3 bla bla sample8 bla bla sample7 d i NaN
4 bla bla sample1 bla bla sample2 e j ('sample1', 'sample2') 50

有什么想法吗?

谢谢!

最佳答案

我不保证这会特别快,但它可以完成工作。我们将使用 set 逻辑来检查匹配项。我们必须跳过一些障碍,以便我们可以存储匹配项的元组列表。我不认为这是一个特别好的主意。

import numpy as np
import pandas as pd

df1['setc'] = df1['column 1'].str.split().apply(set)
# Initialize so addition works
df1['column 4'] = [[] for i in range(len(df1))]
df1['column 5'] = 0

for idx, row in df2.iterrows():
m = (df1.setc.values & set(row['column 4'])) == set(row['column 4'])
df1.loc[m, 'column 4'] += pd.Series([[row['column 4']] for x in range(len(m))])[m]
df1.loc[m, 'column 5'] += row['column 5']

df1 = df1.drop(columns='setc')
# NaN where nothing matched
df1.loc[df1['column 4'].str.len().eq(0), ['column 4', 'column 5']] = np.NaN

输出:

                          column 1 column 2 column 3                                  column 4  column 5
0 bla bla sample1 sample5 sample2 a f [(sample1, sample2), (sample1, sample5)] 68.0
1 bla bla sample1 bla bla sample5 b g [(sample1, sample5)] 18.0
2 bla bla sample3 bla bla sample4 c h [(sample3, sample4)] 35.0
3 bla bla sample8 bla bla sample7 d i NaN NaN
4 bla bla sample1 bla bla sample2 e j [(sample1, sample2)] 50.0

关于python - 检查一个字符串是否包含来自不同数据框的另一个字符串 - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54947267/

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