通过遍历名称和数字来替换列名称

时间:2020-07-06 05:42:03

标签: python

我是Python的新手,正在尝试更改数据文件的所有列名。

我希望每个列名都由'V',数字,'_','name'组成,以便获得以下信息:

V1_category, V1_pleasant, V1_unpleasant, V1_painful, V1_threat, V1_arousal, V2_category, V2_pleasant, V2_unpleasant, V2_painful, V2_threat, V2_arousal, V3_category, V3_pleasant, V3_unpleasant and this repeats until V45.

因此我不得不以数字1:45和以下名称["category", "pleasant", "unpleasant", "painful", "threat", "arousal"]粘贴V,以使其为[Vnumber_name]

任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:1)

pandas.Series.groupby.cumcountstr.cat结合使用的一种方式:

df = pd.DataFrame(columns=list("ABABABAB"))
s = df.columns.to_series()
s2 = s.groupby(s).cumcount().add(1)
df.columns = "V" + s2.astype(str).str.cat(s2.index, sep="_")
print(df)

输出:

Empty DataFrame
Columns: [V1_A, V1_B, V2_A, V2_B, V3_A, V3_B, V4_A, V4_B]
Index: []

答案 1 :(得分:0)

column=["category", "pleasant", "unpleasant", "painful", "threat", "arousal"] 
new_columns=[['V'+str(number+1)+'_'+col for col in column] for number in range(45)]
new_columns = [item for sublist in new_columns for item in sublist]

说明:在第二行中使用列表理解,生成包含所有必需名称的二维列表。然后,第三行有助于将该列表展平为1d形状,并提供所有新的列名。

答案 2 :(得分:0)

您在这里:

titles = ["category", "pleasant", "unpleasant", "painful", "threat", "arousal"]
print([f"V{i}_{title}" for i in range(1,46) for title in titles])

输出如下:

['V1_category', 'V1_pleasant', 'V1_unpleasant', 'V1_painful', 'V1_threat', 'V1_arousal', 'V2_category', 'V2_pleasant', 'V2_unpleasant', 'V2_painful', 'V2_threat', 'V2_arousal', 'V3_category', 'V3_pleasant', 'V3_unpleasant', 'V3_painful', 'V3_threat', 'V3_arousal', 'V4_category', ... , 'V45_category', 'V45_pleasant', 'V45_unpleasant', 'V45_painful', 'V45_threat', 'V45_arousal']