迭代3个pandas数据帧列的最短方法

时间:2016-01-19 05:06:14

标签: python pandas dataframe

执行以下操作的最短路径是什么?

i = 0
for Year, Month, Day in zip(test_data['Year'], test_data['Month'], test_data['Day']):
    ans = dt.date(Year, Month, Day)
    test_data.loc[i,'Day1'] = ans.strftime("%A")
    i += 1

1 个答案:

答案 0 :(得分:2)

您可以在行上apply,这样可以避免zip并跟踪您所在的行:

df = pd.DataFrame({'Year': [2015, 2016], 'Month': [12, 1], 'Day': [28, 3]})

df
Out[3]: 
   Day  Month  Year
0   28     12  2015
1    3      1  2016

df['Day1'] = df.apply(
    lambda row: dt.date(row['Year'], row['Month'], row['Day']).strftime('%A'),
    axis='columns')

输出:

df
Out[11]: 
   Day  Month  Year    Day1
0   28     12  2015  Monday
1    3      1  2016  Sunday