我试图让Python比较两个数据帧。在dataframe1中,我有两列(accat和Origin)。我试图将AC Cat列与数据帧2的输入进行比较。如果在Dataframe 2的一列和正在研究的Dataframe 1的值之间发现匹配,我想将找到匹配的Dataframe 2的列的标题复制到Dataframe 1中的一个新列。你知道吗
DF1型:
f = {'AC-Cat': pd.Series(['B737', 'A320', 'MD11']),
'Origin': pd.Series(['AJD', 'JFK', 'LRO'])}
Flight_df = pd.DataFrame(f)
DF2型:
w = {'CAT-C': pd.Series(['DC85', 'IL76', 'MD11', 'TU22', 'TU95']),
'CAT-D': pd.Series(['A320', 'A321', 'AN12', 'B736', 'B737'])}
WCat_df = pd.DataFrame(w)
我将pandas作为pd导入,numpy作为np导入,并尝试定义一个函数来比较这些列。你知道吗
def get_wake_cat(AC_cat):
try:
Wcat = [WCat_df.columns.values[0]][WCat_df.iloc[:,1]==AC_cat].values[0]
except:
Wcat = np.NAN
return Wcat
Flight_df.loc[:,'CAT'] = Flight_df.loc[:,'AC-Cat'].apply(lambda CT: get_wake_cat(CT))
但是,该功能不会产生所需的输出。例如:取B737 AC Cat值。我希望Python在DF2的CAT-D列中找到这个值,并将这个头复制到df1的新列中。这种情况不会发生。有人能帮我找出为什么我的代码没有给出期望的结果吗?你知道吗
IUC,你可以做^{} 和^{} :
或使用^{} :
这将为您提供两个新列,其中包含找到的匹配项的名称:
不漂亮,但我想我成功了。部分错误是该函数没有WCat\u df。我还将索引改为两个步骤:
然后您需要将下一行更改为:
希望能解决问题
相关问题 更多 >
编程相关推荐