Pandas 基于dataframe中的其他列创建新列

Pandas 基于dataframe中的其他列创建新列,pandas,Pandas,基于其他两列创建一组新列的最佳方法是什么?(类似于交叉表或SQL case语句) 这是可行的,但在大型数据帧上性能非常慢: for label in labels: df[label + '_amt'] = df.apply(lambda row: row['amount'] if row['product'] == label else 0, axis=1) 你可以用 或者 完美的谢谢。我选择了>>>df[label+''u amt']=(df['product']==label)*d

基于其他两列创建一组新列的最佳方法是什么?(类似于交叉表或SQL case语句)

这是可行的,但在大型数据帧上性能非常慢:

for label in labels:
   df[label + '_amt'] = df.apply(lambda row: row['amount'] if row['product'] == label else 0, axis=1)
你可以用

或者


完美的谢谢。我选择了>>>df[label+''u amt']=(df['product']==label)*df['amount']
>>> df
   amount product
0       6       b
1       3       c
2       3       a
3       7       a
4       7       a
>>> df.pivot_table(index=df.index, values='amount', 
...                columns='product', fill_value=0)
product  a  b  c
0        0  6  0
1        0  0  3
2        3  0  0
3        7  0  0
4        7  0  0
>>> for label in df['product'].unique():
...     df[label + '_amt'] = (df['product'] == label) * df['amount']
... 
>>> df
   amount product  b_amt  c_amt  a_amt
0       6       b      6      0      0
1       3       c      0      3      0
2       3       a      0      0      3
3       7       a      0      0      7
4       7       a      0      0      7