Как изменить фрейм данных Pandas, используя серию трансляций на подмножестве столбцов - PullRequest
0 голосов
/ 11 февраля 2019

Учитывая следующую таблицу:

 import numpy as np
 import pandas as pd
 data = pd.DataFrame(data = np.arange(16).reshape((4, 4)),
                     index = ['Chile', 'Argentina', 'Peru', 'Bolivia'],
                     columns = ['one', 'two', 'three', 'four'])


           one  two three  four
 Chile      0    1   2      3
 Argentina  4    5   6      7
 Peru       8    9   10     11
 Bolivia    12   13  14     15

Я хочу применить операцию через трансляцию серии панд по подмножеству столбцов (one и three), которые будут изменять (обновление) таблицы.Итак ..

ser_to_broad = pd.Series([1, 2], index = ['one', 'three'])
data + ser_to_broad

           one  two three  four
Chile       1   NaN   4     NaN
Argentina   5   NaN   8     NaN    
Peru        9   NaN   12    NaN    
Bolivia     13  NaN   16    NaN 

Существует ли способ сохранить исходные значения столбцов two и four с помощью широковещательного подхода?

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

Если вы хотите обновить данные, я думаю, что это будет делать:

ser_to_broad = pd.Series([1, 2], index=['one', 'three'])
data[ser_to_broad.index] += ser_to_broad

print(data)

Вывод

           one  two  three  four
Chile        1    1      4     3
Argentina    5    5      8     7
Peru         9    9     12    11
Bolivia     13   13     16    15
0 голосов
/ 11 февраля 2019

Делая с reindex, поскольку в ser_to_broad есть пропущенные столбцы, он вернет NaN (NaN + somevalue = NaN)

data+ser_to_broad.reindex(data.columns,fill_value=0)
Out[106]: 
           one  two  three  four
Chile        1    1      4     3
Argentina    5    5      8     7
Peru         9    9     12    11
Bolivia     13   13     16    15
...