簡體   English   中英

pandas 在多個數據框列上執行算術運算的最有效方法

[英]pandas most efficient way to execute arithmetic operations on multiple dataframe columns

我的第一篇文章! 我在 jupyter 筆記本上運行 python 3.8.5 & pandas 1.1.0。

我想用同一數據幀的另一列中的相應元素划分幾列。 例如:

import pandas as pd
df = pd.DataFrame({'a': [2, 3, 4], 'b': [4, 6, 8], 'c':[6, 9, 12]})
df
    a   b   c
0   2   4   6
1   3   6   9
2   4   8   12

我想將 'b' 和 'c' 列除以 'a' 中的相應值,並用該除法的結果替換 'b' 和 'c' 中的值。 所以上面的數據框變成:

    a   b   c
0   2   2   3
1   3   2   3
2   4   2   3

我試過

df.iloc[: , 1:] = df.iloc[: , 1:] / df['a']

但這給出了:

    a   b   c
0   2   NaN NaN
1   3   NaN NaN
2   4   NaN NaN

我通過以下方式讓它工作:

for colname in df.columns[1:]:
    df[colname] = (df[colname] / df['a'])

是否有通過避免 for 循環來執行上述操作的更快方法?

謝謝,馬克

差不多了,使用divaxis=0

df.iloc[:,1:] = df.iloc[:,1:].div(df.a, axis=0)
df.b= df.b/df.a
df.c=df.c/df.a

或者

df[['b','c']]=df.apply(lambda x: x[['b','c']]/x.a ,axis=1)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM