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