在每个列数据框架pandas上添加数组的优雅方式

时间:2017-11-02 15:17:58

标签: python pandas

我想在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不起作用

2 个答案:

答案 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