check_df有两列,一列有代码,另一列为空白in_df有两个列,一个是合并列,另一个是V_ORG_UNIT_NAME_LEVEL14。
我想检查"V_ORG_UNIT_CODE"从check_df内部"合并列从in_df。如果匹配(它可能包含的值可能不是精确匹配),我想要相应的"OutputDisplay">
check_df
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