gpt4 book ai didi

python-3.x - Python 与 DataFrame 合并聚合...错误 : '' is both an index level and a column label,,这是模棱两可的

转载 作者:行者123 更新时间:2023-12-03 23:49:00 26 4
gpt4 key购买 nike

import pandas as pd

data1 = [
{'File': '7396ee8aea09.json', 'Last': '2019-04-25 20:24:28+00:00', 'Size': 78796, 'COLA': 'STANDARD'},
{'File': '7777682e4/ip/done', 'Last': '2019-04-24 21:45:01+00:00', 'Size': 4, 'COLA': 'CUSTOM'},
{'File': 'erparameters.json', 'Last': '2019-04-24 21:45:01+00:00', 'Size': 351, 'COLA': 'STANDARD'}
]
data2 = [
{'File': '3343e4/ip/ip.json', 'Last': '2019-04-24 21:45:01+00:00', 'Size': 20, 'COLA': 'STANDARD'},
{'File': 'ta-00000-of-00001', 'Last': '2019-04-24 22:43:17+00:00', 'Size': 140216236, 'COLA': 'STANDARD'},
{'File': '-20514.ckpt.index', 'Last': '2019-04-24 22:43:17+00:00', 'Size': 3168, 'COLA': 'STANDARD'},
]
# right now 2 for the prova but could be much more..
datas = [data1, data2]
results = None
for data in datas:
df = pd.DataFrame(data, columns=['COLA','Size','Last'])\
.groupby(['COLA'])\
.agg({
'COLA': [('COLA', 'max'), ('Count', 'count')],
'Size': [('Size', 'sum')],
'Last': [('Last', 'max')]
})
df.columns = ['COLA', 'Count', 'Size', 'Last']

if results is None:
results = df
else:
results = results.merge(df,
on=['COLA', 'Count', 'Size', 'Last'],
how='outer',
)\
.groupby(['COLA'], as_index=False)\
.agg({
'COLA': [('COLA', 'max'), ('Count', 'sum')],
'Size': [('Size', 'sum')],
'Last': [('Last', 'max')]
})

print (results)

预期结果采用以下格式:
  • COLA 拥有所有独特的 COLA 标签
  • 大小是该 COLA 标签组的所有“大小”的总和
    套。
  • Count 是所有集合中该 COLA 标签组的总数。
  • Last 具有所有集合中该 COLA 标签组的最大日期。

  • 例子:
    results = [
    {'COLA': 'STANDARD', 'Size': 140298571, 'Count': 5, 'Last': '2019-04-25 20:24:28+00:00'},
    {'COLA': 'CUSTOM', 'Size': 4, 'Count': 1, 'Last': '2019-04-24 21:45:01+00:00'}
    ]

    最佳答案

    您可以连接所有数据并进行分组:

    df = pd.concat(pd.DataFrame(d) for d in datas)

    (df.groupby('COLA').agg({'COLA':'count',
    'Size':'max',
    'Last':'max'})
    .rename(columns={'COLA':'Count'})
    .reset_index()
    .to_dict('rows')
    )

    输出:
    [{'COLA': 'CUSTOM',
    'Count': 1,
    'Size': 4,
    'Last': '2019-04-24 21:45:01+00:00'},
    {'COLA': 'STANDARD',
    'Count': 5,
    'Size': 140216236,
    'Last': '2019-04-25 20:24:28+00:00'}]

    更新 :我没有试过这个,但这应该可以工作并且需要更少的内存:
    df = pd.concat(pd.DataFrame(d)
    .groupby('COLA')
    .agg({'COLA':'count',
    'Size':'max',
    'Last':'max'})
    .rename(columns={'COLA':'Count'})
    for data in datas
    )

    df.groupby('COLA').agg({'Count':'sum', 'Size':'max', 'last':'max'})

    关于python-3.x - Python 与 DataFrame 合并聚合...错误 : '' is both an index level and a column label,,这是模棱两可的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60527258/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com