首页 > 解决方案 > Python Pandas 显示两个数据帧之间的位置变化

问题描述

我正在阅读两个数据框,查看一列,然后用-1或+1等显示两个数据框之间的位置差异。我尝试了下面的代码,但它只0在位置变化中显示,当英国之间应该有差异时航空公司和瑞安航空公司

first = pd.read_csv("C:\\Users\\airma\\PycharmProjects\\Vatsim_Stats\\Vatsim_stats\\Base.csv", encoding='unicode_escape')
df1 = pd.DataFrame(first, columns=['airlines', 'Position'])
second = pd.read_csv("C:\\Users\\airma\\PycharmProjects\\Vatsim_Stats\\Vatsim_stats\\Base2.csv", encoding='unicode_escape')
df2 = pd.DataFrame(second, columns=['airlines', 'Position'])

df1['Position Change'] = np.where(df1['airlines'] == df2['airlines'], 0, df1['Position'] - df2['Position'])

我也尝试用下面的代码来做,但只是不断得到一个ValueError: cannot reindex from a duplicate axis

df1.set_index('airlines', drop=False)  # Set index to cross reference by (icao)
df2.set_index('airlines', drop=False)
df2['Position Change'] = df1[['Position']].sub(df2['Position'], axis=0)  
df2 = df2.reset_index(drop=True)  
pd.set_option('display.precision', 0) 

基本 csv 看起来像这样 - 在此处输入图像描述

Base2 csv 看起来像这样 -在此处输入图像描述

如您所见,英国航空公司在 Base csv 中处于 3 位,在 Base 2 csv 中处于 4 位,但是在运行代码时,它只显示0并且不会在两个数据帧之间进行数学运算。
已经坚持了好几天了,非常感谢您的帮助。

标签: pythonpandasdataframecomparisonvalueerror

解决方案


我给你一个替代方案,我不确定它是否受到赞赏。但只是一个想法。

在阅读了两个 csv 并获得了你需要的列之后,你为什么不尝试为列'airlines' 加入两个数据框呢?它将合并两个数据框,键为“航空公司”


推荐阅读