我在 jupyter 筆記本上運行 python 3.8.5 和 pandas 1.1.0。我想將多個列除以同一數據幀的另一列中的相應元素。例如:import pandas as pddf = pd.DataFrame({'a': [2, 3, 4], 'b': [4, 6, 8], 'c':[6, 9, 12]})df? ? a? ?b? ?c0? ?2? ?4? ?61? ?3? ?6? ?92? ?4? ?8? ?12我想將列“b”和“c”除以“a”中的相應值,并用該除法的結果替換“b”和“c”中的值。所以上面的數據框變成:? ? a? ?b? ?c0? ?2? ?2? ?31? ?3? ?2? ?32? ?4? ?2? ?3我試過df.iloc[: , 1:] = df.iloc[: , 1:] / df['a']但這給出了:? ? a? ?b? ?c0? ?2? ?NaN NaN1? ?3? ?NaN NaN2? ?4? ?NaN NaN我通過執行以下操作使其工作:for colname in df.columns[1:]:? ? df[colname] = (df[colname] / df['a'])是否有通過避免 for 循環來更快地完成上述操作的方法?
2 回答

幕布斯7119047
TA貢獻1794條經驗 獲得超8個贊
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)
添加回答
舉報
0/150
提交
取消