在使用 Pandas 的 merge 函数合并 DataFrame 时,如果两个 DataFrame 中存在相同的列名,合并后的 DataFrame 会出现重复的列名,例如 _x_y。为了避免这种情况,可以使用 suffixes 参数来指定重复列的后缀。

例如,以下代码演示了如何使用 suffixes 参数来避免重复列:

# 创建两个 DataFrame
import pandas as pd
data1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
data2 = pd.DataFrame({'A': [1, 2, 3], 'C': [7, 8, 9]})

# 合并 DataFrame,指定 suffixes 参数
data = data1.merge(data2, on='A', how='left', suffixes=('_data1', '_data2'))

# 打印合并后的 DataFrame
print(data)

输出结果:

   A  B_data1  C_data2
0  1        4        7
1  2        5        8
2  3        6        9

可以看到,合并后的 DataFrame 中,重复的列名分别添加了 _data1_data2 后缀。

在本文的例子中,我们可以使用 suffixes 参数来避免重复列:

group_minA = data.groupby(['TrainIndex', 'Via_Seq'])['Arrive_TmS'].min().reset_index().rename(columns={'Arrive_TmS': 'FirstSArrive_TmS', 'Via_Seq': 'seq_min'})
group_minD = data.groupby(['TrainIndex', 'Via_Seq'])['Deptr_TmS'].min().reset_index().rename(columns={'Deptr_TmS': 'FirstSDeptr_TmS', 'Via_Seq': 'seq_min'})

group_maxA = data.groupby(['TrainIndex', 'Via_Seq'])['Arrive_TmS'].max().reset_index().rename(columns={'Arrive_TmS': 'LastSArrive_TmS', 'Via_Seq': 'seq_max'})
group_maxD = data.groupby(['TrainIndex', 'Via_Seq'])['Deptr_TmS'].max().reset_index().rename(columns={'Deptr_TmS': 'LastSDeptr_TmS', 'Via_Seq': 'seq_max'})

data = data.merge(group_minA, on=['TrainIndex', 'seq_min'], how='left', suffixes=('_minA', '_minD'))
data = data.merge(group_minD, on=['TrainIndex', 'seq_min'], how='left', suffixes=('_minD', '_maxA'))
data = data.merge(group_maxA, on=['TrainIndex', 'seq_max'], how='left', suffixes=('_maxA', '_maxD'))
data = data.merge(group_maxD, on=['TrainIndex', 'seq_max'], how='left', suffixes=('_maxD', '_'))

这样,合并后的 DataFrame 中就不会出现重复列了。

希望这篇内容能够帮助你解决问题。

Pandas 合并 DataFrame 避免重复列

原文地址: https://www.cveoy.top/t/topic/nBeu 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录