📜  Pandas DataFrame.assign()(1)

📅  最后修改于: 2023-12-03 15:33:23.474000             🧑  作者: Mango

Pandas DataFrame.assign()

Pandas是Python中用于数据处理和分析的广泛使用的库之一。在Pandas中,.assign()方法允许我们为DataFrame添加新的列。这个方法返回新的DataFrame,我们可以在其中执行链式操作。在本文中,我们将介绍“.assign()”的工作原理及如何使用它。

语法

.assign(**kwargs)

**kwargs表示关键字参数。关键字参数是指一定要传递关键字的参数,这些关键字用于指定参数的名称和值。例如,name = 'John'name是关键字,'John'是值。

该方法接受以关键字为键和可调用函数为值的字典或多个关键字。然后对关键字函数进行计算,添加到DataFrame中并返回新的DataFrame。

示例

首先,我们可以创建一个简单的示例DataFrame,其中包含“Name”和“Age”列。

import pandas as pd

data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David'],
    'Age': [25, 30, 35, 40]
}

df = pd.DataFrame(data)

现在假设我们要添加“Age_in_months”列,我们可以使用以下代码:

df_age_in_months = df.assign(Age_in_months=lambda x: x['Age'] * 12)

该语句用lambda函数计算了* 12,将结果存储在新列“Age_in_months”中,并返回了新的DataFrame。“lambda x”表明函数将接收DataFrame中的每一行,“x”则代表该行的数据。

我们还可以使用多个关键字来添加多个新列:

df_new = df.assign(Age_in_months=lambda x: x['Age'] * 12,
                   Age_Difference=lambda x: x['Age'].diff())

使用此代码,我们添加了两个新的列,“Age_in_months”和“Age_Difference”,并返回了新的DataFrame。“Age_in_months”列和上一个示例相同,但“Age_Difference”列计算的是每个人的年龄与前一个人之间的差异。

改变原始数据

在上述示例中,我们将新的DataFrame返回到了新的变量中,有时我们可能想直接向原始DataFrame添加新的列。在这种情况下,我们可以不使用任何变量名,并直接为DataFrame分配新列(inplace)。

df.assign(Age_in_months=lambda x: x['Age'] * 12, Age_Difference=lambda x: x['Age'].diff(), inplace=True)
结论

.assign()是Pandas DataFrame的强大方法之一,允许我们轻松添加新列,并返回一个新的DataFrame,以摆脱使用多个变量和提高代码可读性的麻烦。它还可以与其他DataFrame方法链式组合使用。