簡體   English   中英

在 Python 中將包含元組列表的字典轉換為 DataFrame

[英]Converting a Dictionary with Lists of Tuples into DataFrame in Python

我正在嘗試將具有元組列表作為值的 2 鍵字典轉換為 Pandas DataFrame。 我正在處理的數據如下所示:

dictionary={'Week':[(week1,week2),(week3,week4)],'Numbers':[(number1,number2),(number3,number4)]}

反正有沒有把它轉換成一個看起來像的熊貓數據幀:

Week   Numbers
week1  number1
week2  number2
week3  number3
week4  number4

我曾嘗試使用pandas.DataFrame(dictionary)將字典強制轉換為 DataFrame,但我最終得到一行有兩個非常寬的列。 任何指導將不勝感激!

您可以使用itertools.chain.from_iterable來展平每個鍵的元組並調用數據幀構造函數:

import itertools
df = pd.DataFrame({k: [*itertools.chain.from_iterable(v)] for k,v in dictionary.items()})

    Week  Numbers
0  week1  number1
1  week2  number2
2  week3  number3
3  week4  number4

您可以使用.explode()函數(從 0.25.0+ 版本開始):

dictionary={'Week':[('week1','week2'),('week3','week4')],'Numbers':[('number1','number2'),('number3','number4')]}
df = pd.DataFrame(dictionary)
print(pd.concat([df.explode('Week')['Week'], df.explode('Numbers')['Numbers']], axis=1))

印刷:

    Week  Numbers
0  week1  number1
0  week2  number2
1  week3  number3
1  week4  number4

僅使用列表理解:

dictionary={'Week':[('week1','week2'),('week3','week4')],'Numbers':[('number1','number2'),('number3','number4')]}
pd.DataFrame({
    k: [t for tup in value for t in tup] for k, value in dictionary.items()
})

ndarray.flatten

pd.DataFrame({
    k: np.array(value).flatten() for k, value in dictionary.items()
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM