用索引替换列名
Replace column name by Index
我在 Dataframe 中有以下数据。
+----+------+----+------+
| Id | Name | Id | Name |
+----+------+----+------+
| 1 | A | 1 | C |
| 2 | B | 2 | B |
+----+------+----+------+
虽然列名重复,但理想情况下,它是前两列(旧数据)与最后两列(新数据)的比较。
我试图通过使用以下代码在索引中附加 _New
来重命名倒数第二列。不幸的是,第一列也附加了 _New
。
df.rename(columns={df.columns[2]: df.columns[2] + '_New'}, inplace=True)
这是我使用上述代码得到的结果。
+--------+------+--------+------+
| Id_New | Name | Id_New | Name |
+--------+------+--------+------+
| 1 | A | 1 | C |
| 2 | B | 2 | B |
+--------+------+--------+------+
我的理解是它应该只将 _New
添加到倒数第二列。以下是预期结果。
+----+------+--------+------+
| Id | Name | Id_New | Name |
+----+------+--------+------+
| 1 | A | 1 | C |
| 2 | B | 2 | B |
+----+------+--------+------+
有什么办法可以做到吗?
您可以使用带有字典的简单循环来跟踪增量。我在这里概括了逻辑来处理任意数量的重复项:
cols = {}
new_cols = []
for c in df.columns:
if c in cols:
new_cols.append(f'{c}_New{cols[c]}')
cols[c] += 1
else:
new_cols.append(c)
cols[c] = 1
df.columns = new_cols
输出:
Id Name Id_New1 Name_New1
0 1 A 1 C
1 2 B 2 B
如果你真的想要 Id_New
那么 Id_New2
等改变:
new_cols.append(f'{c}_New{cols[c]}')
到
i = cols[c] if cols[c] != 1 else ''
new_cols.append(f'{c}_New{i}')
我在 Dataframe 中有以下数据。
+----+------+----+------+
| Id | Name | Id | Name |
+----+------+----+------+
| 1 | A | 1 | C |
| 2 | B | 2 | B |
+----+------+----+------+
虽然列名重复,但理想情况下,它是前两列(旧数据)与最后两列(新数据)的比较。
我试图通过使用以下代码在索引中附加 _New
来重命名倒数第二列。不幸的是,第一列也附加了 _New
。
df.rename(columns={df.columns[2]: df.columns[2] + '_New'}, inplace=True)
这是我使用上述代码得到的结果。
+--------+------+--------+------+
| Id_New | Name | Id_New | Name |
+--------+------+--------+------+
| 1 | A | 1 | C |
| 2 | B | 2 | B |
+--------+------+--------+------+
我的理解是它应该只将 _New
添加到倒数第二列。以下是预期结果。
+----+------+--------+------+
| Id | Name | Id_New | Name |
+----+------+--------+------+
| 1 | A | 1 | C |
| 2 | B | 2 | B |
+----+------+--------+------+
有什么办法可以做到吗?
您可以使用带有字典的简单循环来跟踪增量。我在这里概括了逻辑来处理任意数量的重复项:
cols = {}
new_cols = []
for c in df.columns:
if c in cols:
new_cols.append(f'{c}_New{cols[c]}')
cols[c] += 1
else:
new_cols.append(c)
cols[c] = 1
df.columns = new_cols
输出:
Id Name Id_New1 Name_New1
0 1 A 1 C
1 2 B 2 B
如果你真的想要 Id_New
那么 Id_New2
等改变:
new_cols.append(f'{c}_New{cols[c]}')
到
i = cols[c] if cols[c] != 1 else ''
new_cols.append(f'{c}_New{i}')