【发布时间】:2015-11-20 22:26:22
【问题描述】:
如何根据其他列的值同时添加几个新列?我只找到了一次添加一行的示例。
我可以添加 3 个新列,但这似乎效率不高,因为它必须遍历所有行 3 次。 有没有办法遍历一次DF?
import pandas as pd
from decimal import Decimal
d = [
{'A': 2, 'B': Decimal('628.00')},
{'A': 1, 'B': Decimal('383.00')},
{'A': 3, 'B': Decimal('651.00')},
{'A': 2, 'B': Decimal('575.00')},
{'A': 4, 'B': Decimal('1114.00')},
]
df = pd.DataFrame(d)
In : df
Out:
A B
0 2 628.00
1 1 383.00
2 3 651.00
3 2 575.00
4 4 1114.00
# How to do those in one operation to avoid traversing the DF 3 times
df['C'] = df.apply(lambda row: row['B']-1000, axis=1)
df['D'] = df.apply(lambda row: row['B']*row['B'], axis=1)
df['E'] = df.apply(lambda row: row['B']/2, axis=1)
In : df
Out:
A B C D E
0 2 628.00 -372.00 394384.0000 314.00
1 1 383.00 -617.00 146689.0000 191.50
2 3 651.00 -349.00 423801.0000 325.50
3 2 575.00 -425.00 330625.0000 287.50
4 4 1114.00 114.00 1240996.0000 557.00
【问题讨论】:
标签: python python-3.x pandas