我是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]
任何帮助将不胜感激!
答案 0 :(得分:1)
将pandas.Series.groupby.cumcount
与str.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']