python中assign用法
在Python的Pandas库中,assign
是一个非常有用的函数,它允许我们向DataFrame添加新的列。assign
函数通常用于数据处理和数据分析的过程中,它可以让我们快速地创建新的列,而不改变原始的DataFrame。在本文中,我们将通过一系列的示例来详细介绍assign
函数的用法。
示例1:添加单列
import pandas as pd
# 创建一个DataFrame
df = pd.DataFrame({'A': range(1, 6), 'B': range(10, 15)})
print("原始DataFrame:")
print(df)
# 使用assign添加一列
df_new = df.assign(C=lambda x: x['A'] + x['B'])
print("\n添加一列后的DataFrame:")
print(df_new)
执行结果:
原始DataFrame:
A B
0 1 10
1 2 11
2 3 12
3 4 13
4 5 14
添加一列后的DataFrame:
A B C
0 1 10 11
1 2 11 13
2 3 12 15
3 4 13 17
4 5 14 19
示例2:同时添加多列
# 使用assign同时添加多列
df_new = df.assign(C=lambda x: x['A'] + x['B'], D=lambda x: x['A'] * x['B'])
print("同时添加多列后的DataFrame:")
print(df_new)
执行结果:
同时添加多列后的DataFrame:
A B C D
0 1 10 11 10
1 2 11 13 22
2 3 12 15 36
3 4 13 17 52
4 5 14 19 70
示例3:使用已有列进行计算
# 使用已有列进行计算
df_new = df.assign(C=df['A'] ** 2)
print("使用已有列进行计算后的DataFrame:")
print(df_new)
执行结果:
使用已有列进行计算后的DataFrame:
A B C
0 1 10 1
1 2 11 4
2 3 12 9
3 4 13 16
4 5 14 25
示例4:使用外部值
# 使用外部值
external_values = range(20, 25)
df_new = df.assign(C=external_values)
print("使用外部值后的DataFrame:")
print(df_new)
执行结果:
使用外部值后的DataFrame:
A B C
0 1 10 20
1 2 11 21
2 3 12 22
3 4 13 23
4 5 14 24
示例5:链式调用
# 链式调用
df_new = (df
.assign(C=lambda x: x['A'] + x['B'])
.assign(D=lambda x: x['C'] + 1))
print("链式调用后的DataFrame:")
print(df_new)
执行结果:
链式调用后的DataFrame:
A B C D
0 1 10 11 12
1 2 11 13 14
2 3 12 15 16
3 4 13 17 18
4 5 14 19 20
示例6:使用匿名函数
# 使用匿名函数
df_new = df.assign(C=lambda x: (x['A'] * 2).sum())
print("使用匿名函数后的DataFrame:")
print(df_new)
执行结果:
使用匿名函数后的DataFrame:
A B C
0 1 10 30
1 2 11 30
2 3 12 30
3 4 13 30
4 5 14 30
示例7:条件赋值
# 条件赋值
df_new = df.assign(C=lambda x: ['small' if a < 3 else 'large' for a in x['A']])
print("条件赋值后的DataFrame:")
print(df_new)
执行结果:
条件赋值后的DataFrame:
A B C
0 1 10 small
1 2 11 small
2 3 12 large
3 4 13 large
4 5 14 large
示例8:插入时间序列
import pandas as pd
# 创建一个时间序列
time_series = pd.date_range('2024-01-01', periods=5)
# 插入时间序列
df_new = df.assign(Date=time_series)
print("插入时间序列后的DataFrame:")
print(df_new)
执行结果:
插入时间序列后的DataFrame:
A B Date
0 1 10 2024-01-01
1 2 11 2024-01-02
2 3 12 2024-01-03
3 4 13 2024-01-04
4 5 14 2024-01-05
示例9:结合apply
函数使用
# 结合apply函数使用
df_new = df.assign(C=df.apply(lambda row: row['A'] + row['B'], axis=1))
print("结合apply函数使用后的DataFrame:")
print(df_new)
执行结果:
结合apply函数使用后的DataFrame:
A B C
0 1 10 11
1 2 11 13
2 3 12 15
3 4 13 17
4 5 14 19
示例10:在assign中定义多个新列
# 在assign中定义多个新列
df_new = df.assign(C=df['A'] + 10, D=df['B'] * 2)
print("在assign中定义多个新列后的DataFrame:")
print(df_new)
执行结果:
在assign中定义多个新列后的DataFrame:
A B C D
0 1 10 11 20
1 2 11 12 22
2 3 12 13 24
3 4 13 14 26
4 5 14 15 28
以上示例展示了assign
函数在添加新列、进行列间计算、链式操作、条件赋值以及与其他Pandas函数结合使用时的多样性和灵活性。通过这些示例,我们可以看到assign
是如何帮助我们在数据处理过程中轻松添加和计算新的列,而不影响原始DataFrame的结构。