gpt4 book ai didi

python - 将包含元组的 DataFrame 列转换为行

转载 作者:行者123 更新时间:2023-11-30 22:11:43 25 4
gpt4 key购买 nike

我有一个类似于以下内容的 DataFrame:

   A         B       C    D          E        F
0 1 (10, 11) (a, b) abc () ()
1 2 (10, 11) (a, b) def (2, 19) (j, k)
2 3 () () abc (73,) (u,)

其中某些列包含元组。如何为元组中的每个项目创建一个新行,以使结果看起来像这样?

   A         D      B       C       E       F
0 1 abc 10 a
1 11 b
2 2 def 10 a 2 j
3 11 b 19 k
4 3 abc 73 u

我知道 B 列和 C 列始终具有相同数量的元素,E 列和 F 列也是如此。

最佳答案

使用 zip_longest from itertools 。所有单值都包含在列表中,以便它们可以与其他列表(或元组)一起压缩

expanded = df.apply(
lambda x: pd.DataFrame.from_records(zip_longest([x.A], x.B, x.C, [x.D], x.E, x.F),
columns=list('ABCDEF')),
axis=1
).values

这会创建一个数据帧数组,然后将其连接起来以获得所需的结果。最后,应该重置索引以匹配预期的输出。

df_expanded = pd.concat(expanded).reset_index(drop=True).
# df_expanded outputs:
A B C D E F
0 1.0 10 a abc None None
1 NaN 11 b None None None
2 2.0 10 a def 2 j
3 NaN 11 b None 19 k
4 3.0 None None abc 73 u

关于python - 将包含元组的 DataFrame 列转换为行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51334836/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com