Python显示两个数据帧之间的位置变化

2024-07-07 06:34:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在读两个数据帧,看一列,然后用-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看起来像这样- enter image description here

Base2 csv看起来像这样-enter image description here

正如您所看到的,英国航空公司在基本csv中处于3位,在基本csv中处于4位,但在运行代码时,它只显示0,而不计算两个数据帧之间的数值。
我已经被困在这个问题上好几天了,如果有任何帮助,我将不胜感激


Tags: csv数据代码readindexposition差异drop
2条回答

我给你一个选择,我不知道是否感激。但这只是一个想法

在阅读了两个csv并获得了u所需的列之后,为什么不尝试为“airlines”列加入两个数据帧呢?它将合并两个数据帧,密钥为“airlines”

我想根据列、值和if语句提供一些更简单的方法。 当您拥有大数据帧时,它可能有点无用,但它可以为您提供所需的信息

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'])

我同意,我的回答与你的问题不符。 现在,如果我理解正确-您希望在DataFrame中创建一个新列,如果两个DataFrame中的两个相同列不正确,则为-1,如果正确,则为1

它应该有助于:

key = "Name_Of_Column"
new = []
for i in range(0, len(df1)):
    if df1[key][i] != df2[key][i]:
        new.append(-1)
    else:
        new.append(1)

df3 = pd.DataFrame({"Diff":new}) # I create new DataFrame as Dictionary.
df1 = df1.append(df3, ignore_index = True)
print(df1)

相关问题 更多 >