使用lambda的数据框内容子集使用熊猫应用

时间:2019-09-13 21:38:26

标签: python pandas dataframe lambda apply

我是python和pandas的新手,我正在尝试执行以下操作:

这是我的数据集:

df5
Out[52]: 
      NAME
0  JIMMcdonald
1   TomDickson
2    SamHarper

我正在尝试使用lambda apply提取前三个字符

这是我尝试过的:

df5["FirstName"] = df5.apply(lambda x: x[0:3],axis=1)

结果如下:

df5
Out[54]: 
          NAME    FirstName
0  JIMMcdonald  JIMMcdonald
1   TomDickson   TomDickson
2    SamHarper    SamHarper

我不明白为什么它不起作用..有人可以帮助我吗?

谢谢

1 个答案:

答案 0 :(得分:1)

这是由于DataFrame.apply(您正在使用的)和Series.apply(您要使用的)之间的差异。解决此问题的最简单方法是从数据框中选择所需的序列,然后在其上使用.apply

df5["FirstName"] = df5["NAME"].apply(lambda x: x[0:3],axis=1)

您当前的代码在每列上运行一次应用功能 ,在这种情况下,它将选择前三行。该固定代码在所选列中的每个值上运行该函数。

更好的是,正如@Erfan在他的评论中指出的那样,通常可以使用panda的.str来简化像这样的简单单线字符串操作,该操作使您可以在许多您对单个字符串进行操作的方式相同:

df5["FirstName"] = df5["NAME"].str[:3]