Python DataFrame根据某列生成新的一列

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

猜你喜欢

转载自blog.csdn.net/qq_27866857/article/details/113249574