Python Pandas 里面通过多列条件生成新的一列数据

我想通过Dataframe里面的几个不同的列的条件来新建一个新的列,比如

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'])

frame["city"].ix[2] = np.nan

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)

但是这种方法,如果city有一个值缺失值的话,这段code就会报错,这样的作为条件列有NAN的情况下应该怎么处理呀?

阅读 9.5k
1 个回答

你可以使用frame.fillna来填充缺失值,例如frame.fillna('unknow_city'),也可以在function中使用isnan首先判断a是不是NAN

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题