DataFrame.assign
_DataFrame.assign(kwargs)**
给DataFrame分配一个新列,返回一个新的_DataFrame对象,不仅包含新添加的列,还包含所有原始的列。重新分配的现有列将被覆盖。
举例:使用count列和price列的乘积作为total列
import pandas as pddf = pd.DataFrame({'site':['google', 'baidu', 'wiki', 'pandas'],'count':[18, 39, 22, 45],'price': [1.0, 2.0, 3.0, 4.0]})df = df.assign(total=df['count'] * df['price'])------------------------------------site count price total0 google 18 1.0 18.01 baidu 39 2.0 78.02 wiki 22 3.0 66.03 pandas 45 4.0 180.0
举例:为原本的site列的所有元素重新赋值
import pandas as pddf = pd.DataFrame({'site':['google', 'baidu', 'wiki', 'pandas'],'count':[18, 39, 22, 45],'price': [1.0, 2.0, 3.0, 4.0]})df = df.assign(site=['google','google','google','google'])-------------------------------site count price0 google 18 1.01 google 39 2.02 google 22 3.03 google 45 4.0
举例:将Lambda表达式的结果作为total列添加
import pandas as pddf = pd.DataFrame({'site':['google', 'baidu', 'wiki', 'pandas'],'count':[18, 39, 22, 45],'price': [1.0, 2.0, 3.0, 4.0]})df = df.assign(total=lambda x: x['price'] / 2)-------------------------------------site count price total0 google 18 1.0 0.51 baidu 39 2.0 1.02 wiki 22 3.0 1.53 pandas 45 4.0 2.0
举例:将Series对象作为新的列
import pandas as pddf = pd.DataFrame({'site':['google', 'baidu', 'wiki', 'pandas']})s1 = pd.Series([18, 39, 22, 45], name='count')s2 = pd.Series([1, 2, 3, 4], name='price')df.assign(count=s1, price=s2)----------------------------------------------------------------site count price0 google 18 11 baidu 39 22 wiki 22 33 pandas 45 4
