mars.dataframe.DataFrame.assign#

DataFrame.assign(**kwargs)[来源]#

将新列分配给数据帧。
返回一个新对象,包含所有原始列以及新列。
重新分配的现有列将被覆盖。

Parameters

**kwargs (dict 类型为 {str: 可调用对象序列}) – 列名是关键词。如果值是可调用的,它们将在 DataFrame 上计算并分配给新列。可调用对象不得更改输入的 DataFrame(尽管 pandas 并不会检查这一点)。如果值不是可调用的(例如,序列、标量或数组),则直接分配。

Returns

一个新的数据框,包含新列以及所有现有列。

Return type

数据框

备注

在同一个 assign 中分配多个列是可能的。‘kwargs’ 中后面的项目可以引用在 ‘df’ 中新创建或修改的列;项目按照顺序计算并分配到 ‘df’ 中。

示例

>>> import mars.dataframe as md
>>> df = md.DataFrame({'temp_c': [17.0, 25.0]},
...                   index=['Portland', 'Berkeley'])
>>> df.execute()
          temp_c
Portland    17.0
Berkeley    25.0

其中值是一个可调用的,在 df 上进行评估:

>>> df.assign(temp_f=lambda x: x.temp_c * 9 / 5 + 32).execute()
          temp_c  temp_f
Portland    17.0    62.6
Berkeley    25.0    77.0

或者,可以通过直接引用现有的序列或序列来实现相同的行为:

>>> df.assign(temp_f=df['temp_c'] * 9 / 5 + 32).execute()
          temp_c  temp_f
Portland    17.0    62.6
Berkeley    25.0    77.0

您可以在同一个赋值中创建多个列,其中一个列依赖于同一个赋值中定义的另一个列:

>>> df.assign(temp_f=lambda x: x['temp_c'] * 9 / 5 + 32,
...           temp_k=lambda x: (x['temp_f'] +  459.67) * 5 / 9).execute()
          temp_c  temp_f  temp_k
Portland    17.0    62.6  290.15
Berkeley    25.0    77.0  298.15