在Python中将具有元组列表的字典转换为数据帧

2024-06-23 19:58:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将一个包含元组列表作为值的2键字典转换为一个数据帧。我处理的数据如下所示:

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

是否有必要将其转换为如下所示的数据帧:

Week   Numbers
week1  number1
week2  number2
week3  number3
week4  number4

我曾尝试使用pandas.DataFrame(dictionary)将字典强制放入一个数据帧中,但结果是一行有两个非常宽的列。任何指导都将不胜感激


Tags: 数据列表dictionary字典元组weeknumbersnumber1
3条回答

可以使用^{}展平每个键的元组并调用dataframe构造函数:

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

仅使用列表理解:

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()
})

您可以使用^{}函数(版本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

相关问题 更多 >

    热门问题