加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 添加元组元素,解析为pandas DataFrame

发布时间:2020-12-20 12:13:59 所属栏目:Python 来源:网络整理
导读:我有几个元组的 Python列表: [(0,61),(1,30),(5,198),(4,(0,200)][(1,72),(2,19),(3,31),192),(6,75)][(3,12),51)]... 创建这些元组中的每一个都使得它们的格式(键,值): 有七个键:0,1,2,3,4,5,6 目标输出是一个pandas DataFrame,每个列都由键命名: impor
我有几个元组的 Python列表:

[(0,61),(1,30),(5,198),(4,(0,200)]
[(1,72),(2,19),(3,31),192),(6,75)]
[(3,12),51)]
...

创建这些元组中的每一个都使得它们的格式(键,值):

有七个键:0,1,2,3,4,5,6

目标输出是一个pandas DataFrame,每个列都由键命名:

import pandas as pd
print(df)

0    1    2    3    4    5    6 
91   30   0    0    61   198  0
0    72   19   31   192  75   72
51   0    0    12   0    0    0

现在,我在概念上的问题是如果它们的键是相同的,那么如何添加几个元组“值”.

我可以访问给定列表的这些值,例如

mylist = [(0,200)]
keys =  [x[0] for x in mylist]

print(keys)
[0,5]

我不确定如何创建,例如密钥字典:值对,我可以加载到pandas DataFrame中

解决方法

您可以先使用groupby为每个元素按键求和,然后使用pandas转换为dataframe.请注意,您必须在求和之前先按键排序.

import pandas as pd
from itertools import groupby

data = [
    [(0,200)],[(1,75)],[(0,71),40),98),21),10),21200)],702),190),310),1092),705)],] # copying example from @PatrickArtnerz solution

def group_sum(data):
    """given list,return dictionary of summation based on initial key"""
    data_dict = {k: sum(v_[1] for v_ in v) for k,v in groupby(sorted(data,key=lambda x: x[0]),lambda x: x[0])}
    return data_dict

df = pd.DataFrame(list(map(group_sum,data))).fillna(0)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读