gpt4 book ai didi

python - 拆分 pandas 数据框行时出现问题?

转载 作者:行者123 更新时间:2023-12-01 03:27:55 25 4
gpt4 key购买 nike

我有以下 pandas 数据框:

在:

df

输出:

         A    B        C                                             D
0 0938320 usa amazon orange: $ 8.00| pineapple: $2.00
1 0938320 usa alibaba orange: $ 8.00| apple: $2.00
2 0938320 usa ebay mint: $ 8.00| watermelon: $2.00| mint: $2.00
...
n 0938320 usa amazon pear: $ 8.00| bannana: $2.00

我想按|分割并将其堆叠到 (*):

         A    B        C                  D
0 0938320 usa amazon orange: $ 8.00
1 0938320 usa amazon pineapple: $2.00
2 0938320 usa alibaba orange: $ 8.00
3 0938320 usa alibaba apple: $2.00
4 0938320 usa bay mint: $ 8.00
5 0938320 usa ebay watermelon: $2.00
6 0938320 usa ebay mint: $2.00
7 0938320 usa amazon pear: $ 8.00
...
8 0938320 usa amazon bannana: $2.00

所以,我尝试了以下方法:

在:

s = df2.D.str.split("|").apply(pd.Series, 1).stack()
s.index = s.index.droplevel(-1)
del df2['D']
df.join(s)

输出:

ValueError: Other Series must have a name

还有:

b = pd.DataFrame(df2.D.str.split('|').tolist(), index=df2['A','B','C']).stack()
b = b.reset_index()[[0, 'D']]
b.columns = ['A','B','C']
b

但是,不起作用。我怎样才能修改最后一个方法以获得(*)?我想我的主要问题是我不知道如何获取 index=df2['A','B','C']).stack() 中的所有列.

最佳答案

您可以先将这3列设置为DF的索引,然后对第四列D进行拆分。使用 str.split 中的 expand=True 参数让获得的输出采用数据帧的形式.

In [55]: df
Out[55]:
A B C D
0 938320 usa amazon orange: $ 8.00| pineapple: $2.00
1 938320 usa alibaba orange: $ 8.00| apple: $2.00
2 938320 usa ebay mint: $ 8.00| watermelon: $2.00| mint: $2.00

In [56]: df_split = df.set_index(['A', 'B', 'C'])['D'].str.split('|', expand=True)

In [57]: df_split
Out[57]:
0 1 2
A B C
938320 usa amazon orange: $ 8.00 pineapple: $2.00 None
alibaba orange: $ 8.00 apple: $2.00 None
ebay mint: $ 8.00 watermelon: $2.00 mint: $2.00

然后,stack他们获得一个完整的列(默认情况下删除 NaNs),然后使用 reset_index 将其重新排列回来。

In [58]: df_split.stack().reset_index(level=[0,1,2], name='D').reset_index(drop=True)
Out[58]:
A B C D
0 938320 usa amazon orange: $ 8.00
1 938320 usa amazon pineapple: $2.00
2 938320 usa alibaba orange: $ 8.00
3 938320 usa alibaba apple: $2.00
4 938320 usa ebay mint: $ 8.00
5 938320 usa ebay watermelon: $2.00
6 938320 usa ebay mint: $2.00

关于python - 拆分 pandas 数据框行时出现问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41244748/

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