当我尝试使用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)
["timrobbins", "morganfreeman", "bobgunton, william..."]
。 - Barmarn=3
并不意味着丢弃第三个项目后的所有内容。它意味着所有项目都被包含为第三个值的一部分。 - Barmar