迭代Pandas数据帧中的多个列并创建新列

时间:2018-03-21 16:21:28

标签: python pandas dataframe

我的数据框包含度量列SalesMonth1 - SalesMonth12以及其他列Indexprice

我正在尝试执行以下操作,但它不起作用。你能建议一个更好的方法吗?

For i in range(12):
     DF['Newcol'] = np.where(DF["Index"] >0,
                             DF["SalesMonth[i]"] * DF["price"],
                             DF["SalesMonth[i]"])

2 个答案:

答案 0 :(得分:1)

你很亲密。试试这个:

for i in range(12):
    df['newcol'+str(i)] = np.where(df['Index'] > 0,
                                   df['SalesMonth'+str(i)] * df['price'],
                                   df['SalesMonth'+str(i)])

诀窍是通过str将整数转换为字符串。

答案 1 :(得分:1)

使用loc进行就地分配(非常便宜,快速)。

m = df["Index"] > 0
df.loc[m, 'SalesMonth1':'SalesMonth12'] *= df.loc[m, 'Price']