将列表更改为字典中的数据帧



我正在编写一个字典,它必须根据在列表calvo_massflows中重复的某个项目将数据框拆分为多个小数据框。如果条目不重复,它将在字典中形成一个列表。在第二个for循环中,如果键(l)和键(e)相同,字典将把df数据帧中的索引项添加到其中一个字典列表中。

这是我目前得到的:

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
from scipy.stats import linregress
from scipy.optimize import curve_fit
calvo_massflow = [1, 2, 1, 2, 2, 1, 1]
df = pd.DataFrame({"a":[1, 2, 3, 4, 11, 2, 4, 6, 7, 3],
"b":[5, 6, 7, 8, 10, 44, 23, 267, 4, 66]})

dic = {}
massflows = []
for i, e in enumerate(calvo_massflow):
if e not in massflows:
massflows.append(e)
dic[e] = []
for l in dic:
if e == l:
dic[e].append(pd.DataFrame([df.iloc[i]]))

输出的问题是每个索引都是字典中单独的数据帧。我想把所有的数据框合并起来。我试着用pd.concat做点什么。但我不明白。此外,字典中的章节(如果您这样称呼它们的话)是列表,我更喜欢它们是数据帧。但是,如果我像下面这样将列表更改为数据帧:

dic3 = {}
massflows = []
for i, e in enumerate(calvo_massflow):
if e not in massflows:
massflows.append(e)
dic3[e] = pd.DataFrame([])
for l in dic3:
if e == l:
dic3[e].append(df.iloc[i])

我似乎无法在字典生成的数据框中添加数据框。

我的理想场景是一个包含两个数据帧的字典。一个键为'1',另一个键为'2'。这两个数据帧都包含来自数据帧df的所有信息。而不是现在每个索引都有单独的数据框架。最好数据帧不像现在这样在列表中,但这不会是一个灾难。

让我知道如果你们可以帮助我或需要更多的背景!

如果您想选择dfcalvo_massflow长度的行,按calvo_massflow分组并转换为dict。这可能看起来像这样:

calvo_massflow = [1, 2, 1, 2, 2, 1, 1]
df = pd.DataFrame({"a":[1, 2, 3, 4, 11, 2, 4, 6, 7, 3],
"b":[5, 6, 7, 8, 10, 44, 23, 267, 4, 66]})
dic = dict(iter(df.iloc[:len(calvo_massflow)]
.groupby(calvo_massflow)))
print(dic)

导致一个包含键1和2的字典,其中包含两个经过过滤的dataframe:

{1:    a   b
0  1   5
2  3   7
5  2  44
6  4  23,
2:     a   b
1   2   6
3   4   8
4  11  10}

相关内容

  • 没有找到相关文章

最新更新