如何同时遍历一个列表和一个Daraframe列表

时间:2020-06-09 07:41:56

标签: python pandas

我有一个数据帧列表,我想为其后缀分配一个后缀。

# 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()

结果是一样的。因此,列名没有任何变化。 如何更改列名?

2 个答案:

答案 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"}))