我想在pandas数据帧的每一列上添加一维数组。
例如:
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randint(0,100,size=(4, 4)), columns=list('ABCD'))
s = np.random.randint(0,100,size=(4, 1))
有没有比这更优雅的方式:
for col in df.columns:
df[col] = df[col] + s
显然,summ = df + s不起作用
答案 0 :(得分:3)
您可以使用numpy级别来执行此操作:
df.iloc[:] = df.values+ s
答案 1 :(得分:2)
np.random.seed(0)
df = pd.DataFrame(np.random.randint(0,100,size=(4, 4)), columns=list('ABCD'))
s = np.random.randint(0,100,size=(4, 1))
df
A B C D
0 44 47 64 67
1 67 9 83 21
2 36 87 70 88
3 88 12 58 65
s
array([[39],
[87],
[46],
[88]])
使用df.add
。由于其维度,您需要解开s
。
df.add(s.ravel(), axis=0)
A B C D
0 83 86 103 106
1 154 96 170 108
2 82 133 116 134
3 176 100 146 153