A.K*_*.K. 5 python dataframe pandas
我知道这应该很简单,但我想从熊猫数据框中获取一列,并且仅对于满足某些条件(例如小于 1)的条目,乘以标量(例如 2)。
例如,在这个数据框中,
df = pd.DataFrame(randn(5,4),index='A B C D E'.split(),columns='W X Y Z'.split())
W X Y Z
A 2.706850 0.628133 0.907969 0.503826
B 0.651118 -0.319318 -0.848077 0.605965
C -2.018168 0.740122 0.528813 -0.589001
D 0.188695 -0.758872 -0.933237 0.955057
E 0.190794 1.978757 2.605967 0.683509
Run Code Online (Sandbox Code Playgroud)
如果我有兴趣在 column 上执行此操作W
,结果应该是
W X Y Z
A 2.706850 0.628133 0.907969 0.503826
B 1.302236 -0.319318 -0.848077 0.605965
C -4.036336 0.740122 0.528813 -0.589001
D 0.37739 -0.758872 -0.933237 0.955057
E 0.381588 1.978757 2.605967 0.683509
Run Code Online (Sandbox Code Playgroud)
我有以下绝对任务:
df.loc[df['W'] < 1, 'W'] = 4
Run Code Online (Sandbox Code Playgroud)
但我不确定如何使用W
.
提前致谢!
在您的情况下,只需使用*=
运算符即可进行乘法:
如果您的原始数据框如下所示:
>>> df
W X Y Z
0 2.706850 0.628133 0.907969 0.503826
1 0.651118 -0.319318 -0.848077 0.605965
2 -2.018168 0.740122 0.528813 -0.589001
3 0.188695 -0.758872 -0.933237 0.955057
4 0.190794 1.978757 2.605967 0.683509
Run Code Online (Sandbox Code Playgroud)
您可以使用:
df.loc[df['W'] < 1, 'W'] *= 2
Run Code Online (Sandbox Code Playgroud)
导致这个:
>>> df
W X Y Z
0 2.706850 0.628133 0.907969 0.503826
1 1.302236 -0.319318 -0.848077 0.605965
2 -4.036336 0.740122 0.528813 -0.589001
3 0.377390 -0.758872 -0.933237 0.955057
4 0.381588 1.978757 2.605967 0.683509
Run Code Online (Sandbox Code Playgroud)
这等效于以下内容:
df.loc[df['W'] < 1, 'W'] = df.loc[df['W'] < 1, 'W'] * 2
Run Code Online (Sandbox Code Playgroud)