大熊猫将其他列乘以另一个

时间:2018-09-10 17:16:34

标签: python pandas

我想对某些数据应用比例因子:

col1   col2   col3

10      4      5
100     2      3
1000    6      7

然后,我希望输出为:

col1   col2   col3

10      40       50
100     200      300
1000    6000     7000

我正在尝试使用lambda,但是它一直向我抛出错误。

1 个答案:

答案 0 :(得分:3)

pandas.DataFrame.mulaxis=0

当熊猫在DataFrameSeries之间工作时,它将Series的索引与DataFrame的列对齐。我们可以通过使用等效的操作方法并传递axis=0参数来告诉Pandas将Series索引与DataFrame索引对齐来改变这种行为。

df[['col2', 'col3']] = df[['col2', 'col3']].mul(df['col1'], axis=0)
df

   col1  col2  col3
0    10    40    50
1   100   200   300
2  1000  6000  7000

一种简短的方法

df.update(df.drop('col1', 1).mul(df.col1, axis=0))

在线

而不是就地。意思是,出示副本并保留原件

df.assign(**df.drop('col1', 1).mul(df.col1, axis=0))

   col1  col2  col3
0    10    40    50
1   100   200   300
2  1000  6000  7000

沉思

我在搞怪这种完全荒唐的方式。

[df.get(c).__imul__(df.col1) for c in [*df][1:]];

超级总值取决于理解的副作用,并将理解的结果丢弃。

请忽略此!