【发布时间】:2021-11-25 09:54:06
【问题描述】:
假设我在一个循环中迭代地合并一个 panda 数据框,但是在两次或三次迭代之后,panda 重复列名例如考虑下面的例子,我迭代地合并列,但为了简单起见没有循环:
A= {'Name':['A','B','C'],'GPA':[4.0,3.80,3.70], 'School':['U','U','U'], 'Time':[22,26,30]}
A1 = pd.DataFrame(A)
B= {'Name':['D','E','F'],'GPA':[3.50,3.70,3.60], 'School':['S','S','S'],'Time':[34,44,54]}
B1 = pd.DataFrame(B)
C= {'Name':['G','H','I'],'GPA':[3.70,3.50,3.70], 'School':['C','C','C'],'Time':[76,86,96]}
C1 = pd.DataFrame(C)
L= [A1,B1,C1]
comb = A1
for ii in L[1:]:
comb = pd.concat([comb,ii],ignore_index=True)
comb
B = pd.merge(comb, comb, on=['Name','GPA'])
C = pd.merge(B, comb, on=['Name','GPA'])
D = pd.merge(C, comb, on=['Name','GPA'])
您看到 Panda 重复了两次 School_x 和 School_y 名称,是否可以将其更改为 School_x 和 School_y、School_z 和 School_t。我不是在谈论之后重命名它,而是强制合并为不同的列选择新的列名。否则如何区分具有 1000 列的数据框并想象 500 列具有相同的列名。
更新:以上只是一个示例,假设您正在循环中合并多个数据帧,如下所示:
for ii in list:
df = df.merge(A,on = 'some column', how = 'outer')
那么你如何迭代地更改列名,在我看来每次相同的列都会重复,即使有后缀。
【问题讨论】:
-
有后缀见文档后缀列表,默认为 (“_x”, “_y”) 长度为 2 的序列,其中每个元素可选地是一个字符串,指示要添加到重叠列名称的后缀分别在左侧和右侧。传递 None 值而不是字符串,以指示从左侧或右侧开始的列名应保持原样,不带后缀。至少其中一个值不得为无。 pandas.pydata.org/docs/reference/api/…