Python-Pandas : meaning of asterisk sign in expression

标签 python pandas

在寻找一种在循环内将一列拆分为多列的方法时,我偶然发现了 a list of useful Pandas snippets包含这个表达式:

 # Split delimited values in a DataFrame column into two new columns
df['new_col1'], df['new_col2'] = zip(*df['original_col'].apply(lambda x: x.split(': ', 1)))

它工作得很好,但我无法理解它是如何运作的,特别是关于 * 符号。到目前为止,我只在函数定义中看到星号,并且无法找到有关此情况的任何文档。

谁能解释一下它是如何工作的吗?

最佳答案

zip() in conjunction with the * operator can be used to unzip a list:

x = [1, 2, 3]
y = [4, 5, 6]
zipped = zip(x, y)
print zipped

输出:

[(1, 4), (2, 5), (3, 6)]

说明:

它从列表中获取值:xy(按列)并将其保存在元组中。


并且(这是您感兴趣的部分):

x2, y2 = zip(*zipped)
print x2
print y2

输出:

(1, 2, 3)
(4, 5, 6)

说明:

  1. zip 解压 zipped 的内容(从列表中取出内容)
  2. 从列中的每个元组中获取值,并将其保存在元组中。

因此,如果我们将这些元组放入列中(在解压之前),它们将如下所示:

[
    (1, 4)
    (2, 5)
    (3, 6)
]

打开包装后,它们将如下所示:

(1, 4)
(2, 5)
(3, 6)

如果你看到的话,第一列有 1、2 和 3。第二列有 4、5、6

这就是 zip* 运算符结合使用的效果。

文档:https://docs.python.org/2/library/functions.html#zip

关于Python-Pandas : meaning of asterisk sign in expression,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33802940/

相关文章:

python - 如何在 python 中将数据框的邮政编码排序到 cargo 区域?

来自范围索引的 Pandas 日期时间索引

python - 如何获取python pandas数据框中出现的两列的唯一组合数

python - 为什么要在 Python 中隐式检查是否为空?

python - 在 python 中编辑 plist

python - 如何在Tensorflow 2.x Keras自定义层中使用多个输入?

python - 使用字符串和 NaN 提取多索引 Pandas 数据框的最大值

python - 设置数据帧之间列的差异

python - 如何在Python中生成嵌套循环

python - 在线python代码运行时错误,离线工作