Pandas:如果列不存在,如何创建列
您可以使用以下基本语法在 pandas DataFrame 中创建列(如果该列尚不存在):
df[' my_column '] = df. get (' my_column ', df[' col1 '] * df[' col2 '])
如果 DataFrame 中尚不存在该列,并且该列被定义为现有列col1和col2的乘积,则此特定语法会创建一个名为my_column的新列。
以下示例展示了如何在实践中使用此语法。
示例:如果 Pandas 中不存在列,则创建该列
假设我们有以下 pandas DataFrame:
import pandas as pd #createDataFrame df = pd. DataFrame ({' day ': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], ' sales ': [4, 6, 5, 8, 14, 13, 13, 12, 9, 8, 19, 14], ' price ': [1, 2, 2, 1, 2, 4, 4, 3, 3, 2, 2, 3]}) #view DataFrame print (df) day sales price 0 1 4 1 1 2 6 2 2 3 5 2 3 4 8 1 4 5 14 2 5 6 13 4 6 7 13 4 7 8 12 3 8 9 9 3 9 10 8 2 10 11 19 2 11 12 14 3
现在假设我们尝试添加一个名为“价格”的列(如果该列尚不存在),并将其定义为每个值为 100 的列:
#attempt to add column called 'price'
df[' price '] = df. get (' price ', 100)
#view updated DataFrame
print (df)
day sales price
0 1 4 1
1 2 6 2
2 3 5 2
3 4 8 1
4 5 14 2
5 6 13 4
6 7 13 4
7 8 12 3
8 9 9 3
9 10 8 2
10 11 19 2
11 12 14 3
由于名为Price的列已经存在,pandas 根本不会将其添加到 DataFrame 中。
但是,假设我们尝试添加一个名为“收入”的新列(如果它尚不存在),并将其定义为其中值是销售额和价格列的乘积的列:
#attempt to add column called 'revenue'
df[' revenue '] = df. get (' revenue ', df[' sales '] * df[' price '])
#view updated DataFrame
print (df)
day sales price revenue
0 1 4 1 4
1 2 6 2 12
2 3 5 2 10
3 4 8 1 8
4 5 14 2 28
5 6 13 4 52
6 7 13 4 52
7 8 12 3 36
8 9 9 3 27
9 10 8 2 16
10 11 19 2 38
11 12 14 3 42
该收入列已添加到 DataFrame 中,因为它尚不存在。
其他资源
以下教程解释了如何在 pandas 中执行其他常见操作:
如何根据条件删除 Pandas DataFrame 中的行
如何根据多个条件过滤 Pandas DataFrame
如何在 Pandas DataFrame 中使用“NOT IN”过滤器