我想对某些数据应用比例因子:
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,但是它一直向我抛出错误。
答案 0 :(得分:3)
pandas.DataFrame.mul
与axis=0
当熊猫在DataFrame
和Series
之间工作时,它将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:]];
超级总值取决于理解的副作用,并将理解的结果丢弃。
请忽略此!