我有一个数据帧列表,我想为其后缀分配一个后缀。
# read text files
df_morning = pd.read_csv("df1.txt", sep="\t", error_bad_lines=False, index_col =None)
df_afternoon = pd.read_csv("df2.txt", sep="\t", error_bad_lines=False, index_col =None)
df_night = pd.read_csv("df3.txt", sep="\t", error_bad_lines=False, index_col =None)
#list of data frames
scenarios =[df_morning,df_afternoon,df_night]
#list
names = ['_morning','_afternoon','_night']
#add suffix
for name,scenario in zip(names,scenarios):
scenario.add_suffix("{}".format(name)).rename(columns={"personId{}".format(name): "personId"}, inplace = True)
#scenario.reset_index(inplace = True)
df_morning.head()
结果是一样的。因此,列名没有任何变化。 如何更改列名?
答案 0 :(得分:1)
DataFrame.add_suffix
不会更改in-place
,但会返回文档中所示的新数据框,将其分配给变量以查看更改
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.add_suffix.html
df_morning = pd.read_csv("df1.txt", sep="\t", error_bad_lines=False, index_col =None)
df_afternoon = pd.read_csv("df2.txt", sep="\t", error_bad_lines=False, index_col =None)
df_night = pd.read_csv("df3.txt", sep="\t", error_bad_lines=False, index_col =None)
#list of data frames
scenarios =[df_morning,df_afternoon,df_night]
#list
names = ['_morning','_afternoon','_night']
#add suffix
new_scenarios = []
for name,scenario in zip(names,scenarios):
new_scenario = scenario.add_suffix("{}".format(name)).rename(columns={"personId{}".format(name): "personId"}, inplace = True)
#scenario.reset_index(inplace = True)
new_scenarios.append(new_scenario)
new_scenarios[0].head()
答案 1 :(得分:0)
add_suffix
不能正常工作是有原因的,所以需要:
for i, (name,scenario) in enumerate(zip(names,scenarios)):
scenarios[i] = (scenario.add_suffix("{}".format(name))
.rename(columns={"personId{}".format(name): "personId"}))