一、Pandas使用apply函数给表格同时添加多列
-
怎样给表格添加一列
def my_func(row): new column = row["a"] + rowl["b"] return new column df["new_column"] = df.apply(my_func, axis=1)
-
怎样同时添加多列?
def my func(row): newa, newb = row["a"] + row["b"], rowl["a"] - row["b"] return newa, newb df[["newa", "newb"]] = df.apply(my func, axis=1, result type="expand")
二、应用示例
fpath = '/Users/python/Desktop/means/ml-25m/beijing_tianqi_2017-2019.csv'
df = pd.read_csv(fpath)
df.head()
ymd bWendu yWendu tianqi fengxiang fengli aqi aqiInfo aqiLevel
0 2017-01-01 5℃ -3℃ 霾~晴 南风 1-2级 450 严重污染 6
1 2017-01-02 7℃ -6℃ 晴~霾 南风 1-2级 246 重度污染 5
2 2017-01-03 5℃ -5℃ 霾 南风 1-2级 320 严重污染 6
3 2017-01-04 6℃ -5℃ 霾 北风 1-2级 360 严重污染 6
4 2017-01-05 2℃ -4℃ 霾 北风 1-2级 280 重度污染 5
df['bWendu'] = df['bWendu'].map(lambda x: int(str(x).replace('℃', '')))
df['yWendu'] = df['yWendu'].map(lambda x: int(str(x).replace('℃', '')))
df.head()
ymd bWendu yWendu tianqi fengxiang fengli aqi aqiInfo aqiLevel
0 2017-01-01 5 -3 霾~晴 南风 1-2级 450 严重污染 6
1 2017-01-02 7 -6 晴~霾 南风 1-2级 246 重度污染 5
2 2017-01-03 5 -5 霾 南风 1-2级 320 严重污染 6
3 2017-01-04 6 -5 霾 北风 1-2级 360 严重污染 6
4 2017-01-05 2 -4 霾 北风 1-2级 280 重度污染 5
定义了一个名为 my_func 的函数,该函数接受一个行对象 row 作为参数,并返回两个值:wencha 和 avg
将这个函数应用于 DataFrame df 的每一行,使用 .apply() 方法,并指定 axis=1 来按行操作
使用 result_type=‘expand’ 来指定结果是扩展成新的列
将函数返回的两个值分别赋值给 DataFrame df 的新列 ‘wencha’ 和 ‘avg’
def my_func(row):
return row['bWendu'] - row['yWendu'], (row['bWendu'] + row['yWendu'])/2
df[['wencha', 'avg']] = df.apply(my_func, axis=1, result_type='expand')
df.head()
ymd bWendu yWendu tianqi fengxiang fengli aqi aqiInfo aqiLevel wencha avg
0 2017-01-01 5 -3 霾~晴 南风 1-2级 450 严重污染 6 8.0 1.0
1 2017-01-02 7 -6 晴~霾 南风 1-2级 246 重度污染 5 13.0 0.5
2 2017-01-03 5 -5 霾 南风 1-2级 320 严重污染 6 10.0 0.0
3 2017-01-04 6 -5 霾 北风 1-2级 360 严重污染 6 11.0 0.5
4 2017-01-05 2 -4 霾 北风 1-2级 280 重度污染 5 6.0 -1.0