我想根据名称在一列上应用一个函数。 例如,我想做类似的事情
df = pd.DataFrame(np.random.randn(6,4), index=dates, columns=list('ABCD'))
df['A']*10
df['B']*5
显然得到df,A列乘以10,B乘以5。 apply方法适用于所有数据帧。如何设法仅在一列上执行此操作?
我确定这是一个愚蠢的问题,但我找不到答案><
答案 0 :(得分:2)
您可以使用mul
方法:
np.random.seed(10)
df = pd.DataFrame(np.random.randn(6,4),columns=list('ABCD'))
df['A'] = df['A'].mul(10)
原始数据框的示例:
In [17]: df.A.mul(10)
Out[17]:
0 13.315865
1 6.213360
2 0.042914
3 -9.650657
4 -11.366022
5 -19.777283
Name: A, dtype: float64
它比平时更快*
:
In [18]: %timeit df.A.mul(10)
10000 loops, best of 3: 45.9 us per loop
In [19]: %timeit df.A * 10
10000 loops, best of 3: 62.8 us per loop
答案 1 :(得分:1)
我认为您必须将操作重新分配给列,即:
df['A'] = df['A']*10
所以如果df
是:
A B C D
0 0.413751 -0.484915 -0.559226 -0.522385
1 -0.889737 -1.000377 -0.442455 1.028374
2 0.038178 0.904601 -0.155169 0.152253
3 0.806682 1.119178 0.626849 2.069546
4 0.175276 -1.100351 1.556018 -0.231201
5 3.006512 1.046269 0.134351 1.157927
施加
df['A'] = df['A']*10
df['B'] = df['B']*5
返回:
A B C D
0 4.137510 -2.424573 -0.559226 -0.522385
1 -8.897369 -5.001884 -0.442455 1.028374
2 0.381776 4.523004 -0.155169 0.152253
3 8.066817 5.595892 0.626849 2.069546
4 1.752762 -5.501753 1.556018 -0.231201
5 30.065124 5.231344 0.134351 1.157927