![](/img/trans.png)
[英]Converting dictionary of tuples and lists as key values to pandas 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.