Примените операцию к строкам DataFrame для панд на основе Series, которая соответствует количеству столбцов DataFrame. - PullRequest
2 голосов
/ 06 марта 2019

Допустим, у меня есть DataFrame df и серия s, подобные этой:

>>> df = pd.DataFrame(np.random.randn(2,3), columns=["A", "B", "C"])
>>> df
          A         B         C
0 -0.625816  0.793552 -1.519706
1 -0.955960  0.142163  0.847624
>>> s = pd.Series([1, 2, 3])
>>> s
0    1
1    2
2    3
dtype: int64

Я хотел бы добавить значения s к каждой строке в df.Я полагаю, мне следует использовать метод apply с axis = 1 или applymap, но я не могу понять, как (нужно ли в какой-то момент транспонировать?).

На самом деле моя проблема более сложная, чем эта и финальнаяDataFrame будет состоять из элементов исходного DataFrame, которые будут обработаны в соответствии со значениями двух серий.

1 Ответ

3 голосов
/ 06 марта 2019

Возможным решением является добавление массива 1d numpy, созданного из Series, для предотвращения выравнивания столбцов DataFrame с индексом Series:

df = df + s.values
print (df)
          A         B         C
0  0.207070  1.995021  4.829518
1  0.819741  2.802982  2.801355

Если одинаковые столбцы и значения индекса работают с sum:

#index is same like columns names
s = pd.Series([1, 2, 3], index=df.columns)
print (s)
A    1
B    2
C    3
dtype: int64

df = df + s
...