Python 3.x 同时创建多个新列

Python 3.x 同时创建多个新列,python-3.x,pandas,Python 3.x,Pandas,我有熊猫数据框和字段: A、 B,C,D,E,F到Z 我要创建新字段: B/Z、C/Z、D/Z、E/Z直到Y/Z pandas中是否有一个代码,可以在每个新字段中执行一次而不重复执行此操作?您可以按位置和索引选择列-例如,1:-1用于获取所有不带首末、除以和原始的列: df = pd.DataFrame({ 'A':list('abcdef'), 'B':[4,5,4,5,5,4], 'C':[7,8,9,4,2,3],

我有熊猫数据框和字段:

  • A、 B,C,D,E,F到Z
我要创建新字段:

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

pandas中是否有一个代码,可以在每个新字段中执行一次而不重复执行此操作?

您可以按位置和索引选择列-例如,
1:-1
用于获取所有不带首末、除以和原始的列:

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'))
或通过以下方式删除列:



你能解释一下你的逻辑吗?e、 g.为什么输出中缺少
A,F
?为什么将
F直到Z
更改为
E/Z直到Y/Z
?我只是以这些字段名为例。假设A是位置标识符。字段B到Y是一些观察值。字段Z是人口数量。我只是想要从B/Z到Y/Z的比率。我希望这是清楚的?这太棒了!谢谢你的帮助!
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