Python 这个命令到底在做什么?

Python 这个命令到底在做什么?,python,pandas,lambda,Python,Pandas,Lambda,这一行代码工作得很完美,但我对它的实际功能不是很了解: df['New_Column1'], shrink['New_Column2'] = zip(*df['Original_Column'].apply(lambda x: x.split('-', 1))) 这基本上是将一列拆分为一个破折号,该破折号分隔员工ID号和他们的实际姓名(在原始数据中,他们合并在一列中) 这是最有效的方法吗?我该如何向某人描述这一点?我以前从未使用过“zip”功能,我也不是100%使用lambda,但我有时会使用

这一行代码工作得很完美,但我对它的实际功能不是很了解:

df['New_Column1'], shrink['New_Column2'] = zip(*df['Original_Column'].apply(lambda x: x.split('-', 1)))
这基本上是将一列拆分为一个破折号,该破折号分隔员工ID号和他们的实际姓名(在原始数据中,他们合并在一列中)

这是最有效的方法吗?我该如何向某人描述这一点?我以前从未使用过“zip”功能,我也不是100%使用lambda,但我有时会使用它来更改日期格式。

是的,你是对的,这基本上是将一列拆分为一个破折号,将员工ID号和他们的实际姓名分开(在原始数据中,他们合并在一列中)

我将向您简要介绍一下
zip
lambda
的功能:

:

此函数返回元组列表,其中第i个元组包含来自每个参数序列或iterables的第i个元素

示例

>>> my_list1 = [1, 2, 3, 4, 5]
>>> my_list2 = ['a', 'e', 'i', 'o', 'u']
>>> zip(my_list1, my_list2) #Returns a list of tuples, each tuple has a number corresponding to its number vowel.
[(1, 'a'), (2, 'e'), (3, 'i'), (4, 'o'), (5, 'u')]
>>> 
>>> #Writing a function that squares numbers
>>>
>>> #Long way 
>>> def square(x):
...     return x**2
... 
>>>
>>> #Short way 
>>> square = lambda x: x**2
>>> 
:

可以使用lambda关键字创建小型匿名函数。此函数返回其两个参数之和:lambda,b:a+b

示例

>>> my_list1 = [1, 2, 3, 4, 5]
>>> my_list2 = ['a', 'e', 'i', 'o', 'u']
>>> zip(my_list1, my_list2) #Returns a list of tuples, each tuple has a number corresponding to its number vowel.
[(1, 'a'), (2, 'e'), (3, 'i'), (4, 'o'), (5, 'u')]
>>> 
>>> #Writing a function that squares numbers
>>>
>>> #Long way 
>>> def square(x):
...     return x**2
... 
>>>
>>> #Short way 
>>> square = lambda x: x**2
>>> 

apply
方法为序列的每一行调用lambda函数一次,
df['Original Column']
。为每行调用一次Python函数是一个诀窍 用于慢度(如果序列有多行)。一般来说,要最大限度地提高性能 使用Pandas时,只有在没有其他选项时才使用
apply
方法

在这里使用
zip
会加剧效率低下
zip
返回Python列表 元组数。Python列表和元组比熊猫系列需要更多的空间 当序列中的值为本机NumPy数据类型时。字符串可以是 由本机NumPy数据类型表示,因此将数据保留在一个系列中更为重要 节省空间。因此,如果可能的话,这里应该避免使用
zip
,比如
apply

在这种情况下,您可以代替熊猫的:

屈服

  Original New1 New2
0  abc-def  abc  def
1  abc-def  abc  def
2  abc-def  abc  def
3      foo  foo     
extract
的参数是正则表达式模式。
r'([^-]*)-?(.*)
具有以下含义:

([^-]*)     match 0-or-more characters other than a literal hyphen
-?          match 0-or-1 literal question mark
(.*)        match 0-or-more of any character
由括号包围的模式定义组,然后由
提取方法