在python的嵌套循环中将值分配给df

问题描述 投票:0回答:1

我需要从一个数据集中迭代一个值,将其与另一个数据集中的值进行比较,如果它们匹配,则将两个值都添加到新变量中。

我的代码是这样:

import pandas as pd
import numpy as np

df_new = pd.DataFrame([])

for n in range(len(df1)):
   for i in range(len(df2)):
       if df1['name'][n][:2] == df2['name'][i][:2]:
           temp_df = pd.DataFrame([])
           temp_df['name'] = df1['name'][n]
           temp_df['id1'] = df1['id1'][n]
           temp_df['id2'] = df2['id2'][i]
           df_new = df_new.append(temp_df)

[当我运行此循环然后尝试打印df_new时,我得到一个空的数据框:

 > df_new.head()
 > name    id1    id2

如何将值放入数据框中?

python-3.x pandas numpy nested-loops
1个回答
0
投票

我认为您正在寻找的是合并(我不确定'名称'列中的内容,如果不起作用,请提供示例数据框,我将进行相应的编辑):

df1['merge'] = df1['name'].str.slice(stop=2)
df1['merge'] = df2['name'].str.slice(stop=2)
df_new = df1[['name', 'id1', 'merge']].merge(df2[['name', 'id2', 'merge']], how='inner', on='merge').drop('merge')
© www.soinside.com 2019 - 2024. All rights reserved.