我正在读两个数据帧,看一列,然后用-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中处于3位,在基本csv中处于4位,但在运行代码时,它只显示0
,而不计算两个数据帧之间的数值。
我已经被困在这个问题上好几天了,如果有任何帮助,我将不胜感激
我给你一个选择,我不知道是否感激。但这只是一个想法
在阅读了两个csv并获得了u所需的列之后,为什么不尝试为“airlines”列加入两个数据帧呢?它将合并两个数据帧,密钥为“airlines”
我想根据列、值和if语句提供一些更简单的方法。 当您拥有大数据帧时,它可能有点无用,但它可以为您提供所需的信息
我同意,我的回答与你的问题不符。 现在,如果我理解正确-您希望在DataFrame中创建一个新列,如果两个DataFrame中的两个相同列不正确,则为-1,如果正确,则为1
它应该有助于:
相关问题 更多 >
编程相关推荐