gpt4 book ai didi

python - 在 Pandas 中分隔和堆叠列(Python 3.4)

转载 作者:行者123 更新时间:2023-11-28 19:20:51 25 4
gpt4 key购买 nike

我正在尝试根据空格分隔/解析列单元格内的短语。我在 Python 3.4 中使用 Pandas 模块。因此,我正在尝试做的一个例子就是:

Keyword         Number    Row
Bob Jim Jon 300 2

进入这个:

Keyword        Number     Row
Bob 300 2
Jim 300 2
Jon 300 2

我一直在研究如何在整个论坛中做到这一点,并偶然发现了这个非常相似的问题(并且不会让我直接评论它来问这个问题): pandas: How do I split text in a column into multiple rows?

改编该帖子的答案我创建了这段代码:

import pandas as pd
xl = pd.ExcelFile("C:/Users/j/Desktop/helloworld.xlsx")
df = xl.parse("HelloWorld")
df.head()
df1 = df[['Keyword','Number','Row']]
s = df1['Keyword'].str.split(' ').apply(Series, 1).stack()
s.index = s.index.droplevel(-1)
s.name = 'Keyword'
del df1['Keyword']
y = df1.join(s)
print(y)

但是,当我尝试这样做时,出现以下错误

s = df['Keyword'].str.split(' ').apply(Series, 1).stack()
NameError: name 'Series' is not defined

关于我做错了什么有什么建议吗?谢谢!

最佳答案

您可以使用 apply(pd.Series) 但这会很低效。将 np.repeat + itertools.chain 馈送到 pd.DataFrame 构造函数将提供更好的性能:

import numpy as np
from itertools import chain

df = pd.DataFrame([['Bob Jim Jon', 300, 2]],
columns=['Keyword', 'Number', 'Row'])

split = df['Keyword'].str.split()
n = split.map(len)

res = pd.DataFrame({'Keyword': list(chain.from_iterable(split)),
'Number': np.repeat(df['Number'], n),
'Row': np.repeat(df['Row'], n)})

print(res)

Keyword Number Row
0 Bob 300 2
0 Jim 300 2
0 Jon 300 2

关于python - 在 Pandas 中分隔和堆叠列(Python 3.4),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25435550/

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