gpt4 book ai didi

python - 同一索引的多个列

转载 作者:行者123 更新时间:2023-11-28 22:21:02 25 4
gpt4 key购买 nike

对于我的每个不同样本,我都有在不同运行中产生的统计数据列表:

d = {
"sample1": [
{"stat1": 'a', "stat2": 98}, # stats for sample1, 1st run
{"stat1": 'z', "stat2": 13}, # stats for sample1, 2nd run
],
"sample2": [
{"stat1": 'y', "stat2": 1089}, # stats for sample2, 1st run
{"stat1": 'a', "stat2": 1015}, # stats for sample2, 2nd run
],
}

我正在尝试从中创建一个 DataFrame,以便可以轻松管理统计数据。例如,我想查看给定样本的 stat2 平均值。或者所有样本最常见的 stat1 值。

因此 df.loc["sample2"] 但返回统计信息的所有“行”。 df.loc[["sample1", 3]] 只会返回第 4 次运行。 df["stat1"] 当然会返回所有样本和运行的整个列,df.loc["sample1"]["stat2"] stat2 列对于样本 1。我希望我的索引正确,我对 Pandas 不是很熟悉。

我无法做到正确。我试过使用 pd.MultiIndex 但那并没有真正起作用:

index = pd.MultiIndex.from_tuples(???, names=['sample', 'run'])
df = pd.DataFrame(d, columns=['stat1', 'stat2'], index=index)

我尝试将每个样本与运行次数配对,例如 [("sample1", 0), ("sample1", 1), ("sample2", 0), ("sample2", 1) ] 但这并没有真正奏效,因为每个样本的运行次数并不总是相同。

另外,所有的值都是 NaN 所以我一定是在传递数据时做错了什么。传递 d 和适当的索引和列是否足以让构造函数弄清楚如何填充数据框?那我还应该怎么做?

最佳答案

我想你需要concat使用 dict comprehension,如果需要更改 MultiIndex 的列名称,请添加 rename_axis :

df = pd.concat({k:pd.DataFrame(v) for k, v in d.items()}).rename_axis(('sample','run'))
print (df)
stat1 stat2
sample run
sample1 0 a 98
1 z 13
sample2 0 y 1089
1 a 1015

关于python - 同一索引的多个列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48560857/

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