pandas.DataFrame.assign#
- DataFrame.assign(**kwargs)[源代码]#
将新列分配给DataFrame。
返回一个新对象,其中除新列外,还包含所有原始列。重新分配的现有列将被覆盖。
- 参数
- **kwargs{str:可调用或系列}的词典
列名是关键字。如果这些值是可调用的,则在DataFrame上计算它们并将其分配给新列。Callable不能更改输入DataFrame(尽管Pandas不检查它)。如果值是不可调用的(例如,序列、标量或数组),则只需对其赋值。
- 退货
- DataFrame
一个新的DataFrame,除了现有的所有列之外,还有新的列。
注意事项
将多个列分配给同一
assign
是有可能的。‘’中的后续项目 ** Kwargs‘可以指’df‘中新创建或修改的列;项被计算并按顺序分配到’df‘中。示例
>>> df = pd.DataFrame({'temp_c': [17.0, 25.0]}, ... index=['Portland', 'Berkeley']) >>> df temp_c Portland 17.0 Berkeley 25.0
其中,值是可调用的,计算对象为 df :
>>> df.assign(temp_f=lambda x: x.temp_c * 9 / 5 + 32) temp_c temp_f Portland 17.0 62.6 Berkeley 25.0 77.0
或者,也可以通过直接引用现有系列或序列来实现相同的行为:
>>> df.assign(temp_f=df['temp_c'] * 9 / 5 + 32) 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) temp_c temp_f temp_k Portland 17.0 62.6 290.15 Berkeley 25.0 77.0 298.15