assign是pandas包中的一个函数,用于给DataFrame赋值,其具体使用方法如下:
df.assign(col1= lambda x: x['col2']+ x['col3'])
该函数接收一个字典作为参数,字典的key表示要新增的列名,value表示新列数据的计算方式。下面给出两个示例:
第一个示例:向DataFrame中新增一列“new_col”,该列的值为两列之和
import pandas as pd
df=pd.DataFrame({'col1':[1,2,3],'col2':[2,4,6],'col3':[3,6,9]}) # 创建一个三列的DataFrame
df.assign(new_col = lambda x: x['col2']+ x['col3']) # 使用assign函数新增一列new_col,该列的值为col2和col3之和
输出结果为:
col1 col2 col3 new_col
0 1 2 3 5
1 2 4 6 10
2 3 6 9 15
第二个示例:新增多列,并使用assign进行数据转换
import pandas as pd
import numpy as np
df=pd.DataFrame({'col1':[1,2,3],'col2':[2,4,6],'col3':[3,6,9]}) # 创建一个三列的DataFrame
df_new=df.assign(new_col = lambda x: x['col2']+ x['col3'], # 新增一列new_col,该列的值为col2和col3之和
col4 = lambda x: np.where(x['col1'] > 2, 'high', 'low')) #新增一列col4,该列的条件是col1大于2,否则为low
df_new
输出结果为:
col1 col2 col3 new_col col4
0 1 2 3 5 low
1 2 4 6 10 low
2 3 6 9 15 high
上述代码中,使用了numpy包中的where函数,根据指定的条件添加新值。同时,可以一次性给DataFrame新增多列。