gpt4 book ai didi

python - 有条件地重命名多个列名称

转载 作者:行者123 更新时间:2023-12-01 06:51:48 24 4
gpt4 key购买 nike

我想通过为每个重复项附加数字 1 来重命名多个同名列。

这是我尝试过的

select_cols = np.asarray([i for i, col in enumerate(fully_merged.columns) if 'stance' in col])
fully_merged.rename(columns={cols:'stance'+str(i) for cols in fully_merged.columns[select_cols] for i in range(1,7)})
# df.rename(columns={col: '' for col in df.columns[idx_filter]}, inplace=True)

但这会为每列包含“立场”一词的列返回“立场6”

这是我的列名称的示例:

x1,stance,y1,x2,stance,y2,x3,stance,y3,x4,stance,y4,x5,stance,y5,x6,stance,y6

预期输出:

x1,stance1,y1,x2,stance2,y2,x3,stance3,y3,x4,stance4,y4,x5,stance5,y5,x6,stance6,y6

最佳答案

将列转换为系列并按 GroupBy.cumcount 创建计数器用于将具有 1 值的列重命名为 N 值:

a = 'x1,stance,y1,x2,stance,y2,x3,stance,y3,x4,stance,y4,x5,stance,y5,x6,stance,y6'
df = pd.DataFrame(columns=a.split(','))

select_cols = df.columns.to_series()
count = select_cols.groupby(level=0).cumcount().add(1).astype(str)

df.columns = np.where(select_cols == 'stance', 'stance' + count, select_cols)
print (df)
Empty DataFrame
Columns: [x1, stance1, y1, x2, stance2, y2, x3, stance3, y3,
x4, stance4, y4, x5, stance5, y5, x6, stance6, y6]
Index: []

关于python - 有条件地重命名多个列名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58953805/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com