熊猫同时创建多个新列

时间:2019-04-25 11:46:54

标签: python-3.x pandas

我的熊猫数据框具有以下字段:

  • A,B,C,D,E,F直到Z

我要创建新字段:

  • B / Z,C / Z,D / Z,E / Z直到Y / Z

大熊猫中是否有一个代码可以执行一次,而不必为每个新字段重复执行此操作?

1 个答案:

答案 0 :(得分:1)

您可以按DataFrame.iloc和索引按位置选择列-例如1:-1用于获取所有没有第一列和最后一列的列,除以DataFrame.divDataFrame.add_prefixDataFrame.join到原始列:

df = pd.DataFrame({
        'A':list('abcdef'),
         'B':[4,5,4,5,5,4],
         'C':[7,8,9,4,2,3],
         'D':[4,3,2,2,4,5],
         'Z':[5,3,6,9,2,4],

})

df = df.join(df.iloc[:, 1:-1].div(df['Z'], axis=0).add_suffix('/Z'))

或通过DataFrame.drop删除列:

df = df.join(df.drop(['A','Z'], axis=1).div(df['Z'], axis=0).add_suffix('/Z'))

print (df)
   A  B  C  D  Z       B/Z       C/Z       D/Z
0  a  4  7  4  5  0.800000  1.400000  0.800000
1  b  5  8  3  3  1.666667  2.666667  1.000000
2  c  4  9  2  6  0.666667  1.500000  0.333333
3  d  5  4  2  9  0.555556  0.444444  0.222222
4  e  5  2  4  2  2.500000  1.000000  2.000000
5  f  4  3  5  4  1.000000  0.750000  1.250000