有两个变量的嵌套for循环.要附加在数据框列中的输出



check_df有两列,一列有代码,另一列为空白in_df有两个列,一个是合并列,另一个是V_ORG_UNIT_NAME_LEVEL14。

我想检查"V_ORG_UNIT_CODE"从check_df内部"合并列从in_df。如果匹配(它可能包含的值可能不是精确匹配),我想要相应的"OutputDisplay">

check_df

tbody> <<tr>高等
V_ORG_UNIT_CODE V_ORG_UNIT_NAME_LEVEL14
abc
def

如果我已经正确地实例化了你的数据框架(检查下面),下面的代码似乎可以提供你想要的结果:

import pandas as pd
check_df = pd.DataFrame()
in_df = pd.DataFrame()

首先创建check_df:

check_df['V_ORG_UNIT_CODE'] = ['abc', 'def', 'gth']
check_df['V_ORG_UNIT_NAME_LEVEL14'] = [None, None, None]

check_df看起来像这样:

V_ORG_UNIT_CODE V_ORG_UNIT_NAME_LEVEL14
0             abc                    None
1             def                    None
2             gth                    None
然后我们创建in_df:
in_df['OutputDisplay'] = [123, 456, 567]
in_df['MergedColumn'] = ['dasabcraf', 'asfgfdg', 'as0def!gfhg']

in_df看起来像这样:

OutputDisplay MergedColumn
0            123    dasabcraf
1            456      asfgfdg
2            567  as0def!gfhg

然后我保持你的代码基本上不变,除了我使用enumerate来获得check_df的第一列中的每个项目以及它的索引为i:

for i, x in enumerate(check_df["V_ORG_UNIT_CODE"]): 
for y, z in zip(in_df["MergedColumn"], in_df["OutputDisplay"]):
if x in y:
check_df['V_ORG_UNIT_NAME_LEVEL14'][i]=z

print (check_df)

生成如下结果:

V_ORG_UNIT_CODE V_ORG_UNIT_NAME_LEVEL14
0             abc                     123
1             def                     567
2             gth                    None

这就是你想要的吗?

check,5 line "y value"类型,必须是字符串类型

尝试DataFrame类内置函数。insert

https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.insert.html

最新更新