在两个不同的数据帧之间循环并匹配字符串

2024-05-13 02:47:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个不同的数据帧df和df2,我想循环通过df的每一行,在df2的特定行中搜索某些匹配,并为每个匹配返回一个txt文件。你知道吗

数据框=

name Tec Location jhon js sr nz mark python ssr us alan java jr mx

df2=

company job Country Index company a js jr uk 1 company b python ssr us 2 company c java jr mx 3

到目前为止,我一直在做以下工作:

for index, row in df.iterrows(): for indexb, rowb in df2.iterrows(): if str(row.Tec) in str(rowb.job) and str(row.Location) in rowb.Country: print ('Match with ' + str(rowb.company)) sys.stdout= open(r'path\to\file\%s.txt'%(row['name']+ str(rowb.Index),), 'w') else: pass

我不断得到错误匹配的文本文件,或者在所有输出txt文件中重复df2的第一行。 我想把技术和工作做比较,把地点和国家做比较。 例如,本例的输出为: 标记2.txt,其中文件包含文本“与公司b匹配”

你知道吗?你知道吗


Tags: 文件数据nameintxtdfjslocation
1条回答
网友
1楼 · 发布于 2024-05-13 02:47:17

迭代行不是处理数据帧的首选方法。你知道吗

您可能想尝试加入df和df2。然后应用过滤器将要保存到csv中的行保留下来。你知道吗

df = pd.DataFrame([['jhon', 'js sr', 'nz'], ['mark', 'python ssr', 'us'], ['alan', 'java jr', 'mx']], columns=['name', 'Tec', 'Location'])
df2 = pd.DataFrame([['company a', 'js jr', 'uk'], ['company b', 'python ssr', 'us'], ['company c', 'java jr', 'mx']], columns=['company', 'job', 'Country'])
# Merge the two dataframes
df3 = df.merge(df2, how='right', left_on=['Tec', 'Location'], right_on=['job', 'Country'])
df3 = df3[df3['name'].notnull()]
df3['name'].to_csv('output.csv')

相关问题 更多 >