pandas apply

lambda 参数:表达式

 
lambda x, y: x*y			# 函数输入是x和y,输出是它们的积x*y
lambda:None					# 函数没有输入参数,输出是None
lambda *args: sum(args)		# 输入是任意个数参数,输出是它们的和(隐性要求输入参数必须能进行算术运算)
lambda **kwargs: 1			# 输入是任意键值对参数,输出是1

 
apply方法都是通过传入一个函数或者lambda表达式对数据进行批量处理

apply方法处理的都是一个Series对象

 
df.apply(np.sqrt)
df.apply(np.sum, axis=0)
df.apply(np.sum, axis=1)
data['col'] = data['col'].apply(lambda x: round(x)) 

combine_first

 
combine  英/kəmˈbaɪn , ˈkɒmbaɪn/  美/kəmˈbaɪn , ˈkɑːmbaɪn/
v.(使)结合;联合;合并;混合;使融合(或并存);兼有;兼备;同时做(两件或以上的事);兼做;兼办

 
import pandas as pd
import numpy as np
df1 = pd.DataFrame({'A':[1,np.nan], 'B':[np.nan,4]})
df2 = pd.DataFrame({'A':[10,20],   'B':[30,np.nan]})
df1

 

    

 

    

 

    

 


 

  

 


pandas concat

axis=1 列维度

 
b2 = pd.concat([b2,tmp],axis=1)

axis=0 行维度

 
b2 = pd.concat([b2,tmp],axis=0)

pandas from_dict

 
data_pd = pd.DataFrame.from_dict(self.val_dict, orient='index').T 

.T 转置,行列互换一下 

pandas map

参数是函数

 
与apply完全等效

data['col'] = data['col'].apply(lambda x: round(x)) 
等价于
data['col'] = data['col'].map(lambda x: round(x)) 

参数是字典:映射功能

 
dic = {"aaa":"bbb"}
data['col'] = data['col'].map(dic) 

它会将原data中col值为aaa的数值转换/映射为bbb 

where

 
import pandas as pd

df = pd.DataFrame({
    'A': [1, 2, 3, 4],
    'B': [10, 20, 30, 40]
})

    

 
# 创建一个条件,要求 A 大于 2 并且 B 小于 35
condition = (df['A'] > 2) & (df['B'] < 35)

# 根据条件更新列
df['C'] = df['B'].where(condition, 999)
print(df)
    

 
   A   B    C
0  1  10  999
1  2  20  999
2  3  30   30
3  4  40  999

    

 

    

 

    

 


 

  

 


pandas values

 
import pandas as pd 
data = pd.DataFrame([[1,2,3],[1,2,3],[1,2,3]],columns=["a","b","c"])
data.columns   # Index(['a', 'b', 'c'], dtype='object')

 
data.values

array([[1, 2, 3],
       [1, 2, 3],
       [1, 2, 3]])
    

 
type(data.values)
numpy.ndarray
    
参考
    
    pandas之apply函数简介及用法详解
    Python 教学 | Pandas 函数应用(apply/map)【下】
    Pandas核心操作map、apply、applymap超详解(面试常问)