Pandas str.split() 函数无法正常工作

2024-02-14

在尝试使用 Pandas 系列 str.split() 函数分割数据帧的“Actors”列中的值时,我得到的值比我指定的分割更多:

df['Actors'] = df['Actors'].str.split(",",n=3)

1      [timrobbins, morganfreeman, bobgunton, william...
2      [marlonbrando, alpacino, jamescaan, richardsca...
3      [alpacino, robertduvall, dianekeaton, robertde...
4      [christianbale, heathledger, aaroneckhart, mic...
5      [martinbalsam, johnfiedler, leejcobb, egmarshall]

如果我尝试使用下面的代码片段对上述结果进行切片,则 NaN 开始出现在结果中:

df['Actors'] = df['Actors'].str.split(",",n=3)[:3]
df['Actors'].head()

1    [timrobbins, morganfreeman, bobgunton, william...
2    [marlonbrando, alpacino, jamescaan, richardsca...
3    [alpacino, robertduvall, dianekeaton, robertde...
4                                                  NaN
5                                                  NaN
Name: Actors, dtype: object

或者,如果我尝试使用 apply 函数的代码片段(如下所示),则会获得正确的结果:

df['Actors'] = df['Actors'].apply(lambda x: x.split(",")[:3])
df['Actors'].head()

1        [timrobbins, morganfreeman, bobgunton]
2           [marlonbrando, alpacino, jamescaan]
3         [alpacino, robertduvall, dianekeaton]
4    [christianbale, heathledger, aaroneckhart]
5         [martinbalsam, johnfiedler, leejcobb]
Name: Actors, dtype: object

我想知道为什么会发生这种异常以及在这种情况下如何正确使用 str.split() 函数?

要进一步检查数据,您可以使用以下代码片段自行下载数据:

df = pd.read_csv('https://query.data.world/s/uikepcpffyo2nhig52xxeevdialfl7',index_col=0)

IIUC,您现在想知道两者之间有什么不同str.split(",",n=3)[:3] and str.split(",").str[:3]

str.split(",",n=3)[:3]被分割于','从左到右,分成3次。分割的输出是每行都是一个列表的系列。接下来,你打电话[:3]在输出上。它对输出的前 3 行进行切片,并仅返回新的 3 行系列。

df['Actors'] = df['Actors'].str.split(",",n=3)[:3]是系列作业。系列分配与索引对齐。任何df['Actors'].index输出 3 行系列中不存在的将被分配为NaN在价值上。这就是最终的原因df['Actors']只有 3 行有值,其余的是NaN

On df['Actors'].str.split(",").str[:3],这是熊猫Indexing with .str。即,它是 pandas str 访问器的内置功能。它按照传递给的数字对每一行的整个系列进行切片[]。您可以在这里阅读更多内容:https://pandas.pydata.org/pandas-docs/stable/user_guide/text.html#indexing-with-str https://pandas.pydata.org/pandas-docs/stable/user_guide/text.html#indexing-with-str。它返回与原始数据相同长度(相同行数)的序列,其中每行值均按内部数字进行切片[].

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pandas str.split() 函数无法正常工作 的相关文章

随机推荐