我正在撰寫一個字典,它必須根據串列 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 的所有資訊。而不是現在每個索引都有單獨的資料框。最好資料框不像現在那樣在串列中,但這不會是一場災難。
讓我知道你們是否可以幫助我或需要更多背景資訊!
uj5u.com熱心網友回復:
IIUC,您要選擇df長度為的行calvo_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 的字典:
{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}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/488120.html
標籤:Python 熊猫 数据框 字典 熊猫-groupby
上一篇:回傳函式的字典
