记录一些pandas的操作
一、修改某个值大于指定值就重新赋值
import pandas as pd
df = pd.DataFrame(
{'age':[10,11,12],
'name':['tim', 'tom', 'rose'],
'income':[100,200,300]},
index=['person1', 'person2', 'person3'])
#将年龄大于等于11的修改为20
print(df)
df.loc[df['age']>=11,'age']=20
print(df)
#函数版
def change_target(df,cls,num,target_num):
df.loc[df[cls]>=num,cls]=target_num
return df
print(df)
df = change_target(df,'age',11,20)
print(df)
二、使用apply和lambda同时操作数据框
1、创建一个表如下:
import pandas as pd
import numpy as np
df = pd.DataFrame(
{'age':[10,11,12],
'name':['tim', 'tom', 'rose'],
'income':[np.nan,200,300]},
index=['person1', 'person2', 'person3'])
(1)目的:将年龄大于10岁的更新为100。
详细代码如下:
对df['age']列执行apply操作,对此列每一个数字都执行自定义的函数。
#自定义函数:如果x大于10,那就让x等于100,否则还是x自己
def new_fc(x):
if x>10:
x=100
else:
x=x
return x
df['new_age'] = df['age'].apply(lambda x:new_fc(x))
(2)目的:将income列的空值填充为0
详细代码如下:
对df['income']列执行apply操作,对此列每一个数字都执行自定义的函数。
import pandas as pd
import numpy as np
df = pd.DataFrame(
{'age':[10,11,12],
'name':['tim', 'tom', 'rose'],
'income':[np.nan,200,300]},
index=['person1', 'person2', 'person3'])
def new_fc(x):
if pd.isna(x): #此处需要通过isna判断空值
x=0
else:
x=x
return x
df['new_income'] = df['income'].apply(lambda x:new_fc(x))