Как суммировать элементы кадра данных панд? - PullRequest
0 голосов
/ 02 октября 2019

Я новичок в python, и это уже второй вопрос, который я здесь задаю. У меня есть следующий pandas dataframe, полученный из API:

                              data                metadata                                    
1388534400000        {'electricity': 0.0}            NaN                                    
1388538000000        {'electricity': 0.0}            NaN                                    
1388541600000        {'electricity': 0.0}            NaN                                    
1388545200000        {'electricity': 0.0}            NaN                                    
1388548800000        {'electricity': 0.0}            NaN

Это только первые элементы dataframe (столбцы 'data' и 'metadata'), последние строки:

1420066800000  {'electricity': 0.0}            NaN                               
params              NaN                      {'lat': '51.564', 'lon': ...
units               NaN                      {'time': 'UTC', 'electricity': 'kW'}

У меня был python, напечатавший тип структуры, и он возвратил это:

Я хочу получить сумму всех значений с плавающей запятой, которые идут после 'электричества', но не знаю как. Я искал в Google и не смог найти ничего, что работает. Кто-нибудь знает как это решить? Спасибо!

Вот как я запрашиваю данные:

def query_pv(lat, lon, date_from, date_to, 
         tilt, azim=180, tracking=0, system_loss=10, 
         capacity=1, dataset='merra2', interpolate=False, 
         local_time=False, raw=False):

s = requests.session()

# get token
token = _load_token()

# send token through header
s.headers = {'Authorization': 'Token ' + token}

url = API_BASE + 'data/pv'

# pre-process inputs
date_from = _date_to_string(date_from)
date_to   = _date_to_string(date_to)

args = {
    'lat': lat,
    'lon': lon,
    'date_from': date_from,
    'date_to': date_to,
    'dataset': dataset,
    'capacity': capacity,
    'system_loss': system_loss,
    'tracking': tracking,
    'tilt': tilt,
    'azim': azim,
    'format': 'json',
    # 'metadata': metadata,
    'raw': raw
}

r = s.get(url, params=args)

if not r.ok:
    raise Exception('Query failed. Check input parameters.')

return pd.read_json(r.text, orient='index')

1 Ответ

0 голосов
/ 04 октября 2019

Вы можете получить доступ к своим данным через заявку, чтобы получить сумму по столбцам:

df=pd.DataFrame({'A': [{'electricity':0.0},{'electricity':1.0},{'electricity':5},{'electricity':4}],'B':['a','b','a','c']})
sumElectricity = df['A'].dropna().apply(lambda x: x['electricity'])).sum()

Однако этот подход подразумевает, что каждая строка либо пуста, либо содержит слово с ключом electricity.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...