如何对熊猫数据框的元素求和?

时间:2019-10-02 07:53:01

标签: python-3.x pandas

我是python的新手,这已经是我在这里问的第二个问题。我有以下从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

这些只是数据框的前几个元素(列“ 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 :(得分:0)

您可以通过应用程序访问数据以逐列获取总和:

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键的字典。