Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用lambda的数据帧内容子集使用pandas应用_Python_Pandas_Dataframe_Lambda_Apply - Fatal编程技术网

Python 使用lambda的数据帧内容子集使用pandas应用

Python 使用lambda的数据帧内容子集使用pandas应用,python,pandas,dataframe,lambda,apply,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 FirstNam

我对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
我不明白它为什么不起作用。。有人能帮我吗


谢谢

这是因为您正在使用的和您想要使用的之间存在差异。解决此问题的最简单方法是从数据帧中选择所需的系列,然后使用。应用于:

当前代码在每列上运行一次apply函数,在这种情况下,它将选择前三行。此固定代码对选定列中的每个值运行函数

更好的是,正如@Erfan在他的评论中指出的,像这样简单的单行字符串操作通常可以使用panda的.str来简化,它允许您以与操作单个字符串相同的方式操作整个字符串系列:

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

你不需要申请简单的操作,使用:df['NAME'].str[:3]可能重复的
df5["FirstName"] = df5["NAME"].str[:3]