import pandas as pd
df = pd.DataFrame({'A':[1,0,-1]})
# df['B'] = df['A'].map(lambda a : 1 if a>0 else 0) #根据列A新增列B,A中大于0的值为1,否则为0
df['B'] = df.apply(lambda a : 1 if a['A']>0 else 0,axis=1) #方式2,lambda a 其实代表的是df。 方式1中指定了列名,不用加axis=1
print(df)
结果:
A B
0 1 1
1 0 0
2 -1 0
Process finished with exit code 0
多条件
import numpy as np
import pandas as pd
data = {'city': ['Beijing', 'Shanghai', 'Guangzhou', 'Shenzhen', 'Hangzhou', 'Chongqing'],
'year': [2016,2016,2015,2017,2016, 2016],
'population': [2100, 2300, 1000, 700, 500, 500]}
frame = pd.DataFrame(data, columns = ['year', 'city', 'population', 'debt'])
def function(a, b):
if 'ing' in a and b == 2016:
return 1
else:
return 0
print(frame, '\n')
frame['test'] = frame.apply(lambda x: function(x.city, x.year), axis = 1)
print(frame)
year city population debt
0 2016 Beijing 2100 NaN
1 2016 Shanghai 2300 NaN
2 2015 Guangzhou 1000 NaN
3 2017 Shenzhen 700 NaN
4 2016 Hangzhou 500 NaN
5 2016 Chongqing 500 NaN
year city population debt test
0 2016 Beijing 2100 NaN 1
1 2016 Shanghai 2300 NaN 0
2 2015 Guangzhou 1000 NaN 0
3 2017 Shenzhen 700 NaN 0
4 2016 Hangzhou 500 NaN 0
5 2016 Chongqing 500 NaN 1
Process finished with exit code 0