向数据框python添加新的永久列

时间:2017-12-20 06:29:44

标签: python python-3.x dataframe jupyter-notebook

我正在构建一个假数据集来玩。我有一个名为patient_data的数据集,其中包含患者的信息:

patient_data = pd.DataFrame(np.random.randn(100,5),columns='id name dob sex state'.split())

这给了我100个观察样本,包括姓名,生日等变量

显然,其中一些(如姓名性和状态)是分类变量,并且附加随机数字是没有意义的。

所以"性别"我创建了一个函数,它将每个随机数< 0变为"男性"以及其他一切要读的女性。"我想创建一个名为" gender"的新变量。并将其存储在此变量中:

def malefemale(x):  
if x < 0:
    print('male')
else:
    print('female')

然后我写了一个代码,将这个函数应用到数据框中,正式创建一个新的变量&#34;性别。&#34;

patient_data.assign(gender = patient_data['sex'].apply(malefemale))

但是当我输入&#34; patient_data&#34;在jupiter笔记本中,我没有看到更新的数据框包含这个新变量。似乎没有做任何事情。

是否有人知道我可以做些什么来将这个新的性别变量永久添加到我的patient_data数据框中,并且该功能正常工作?

2 个答案:

答案 0 :(得分:1)

我认为您需要分配回来,对于新值,请使用numpy.where

patient_data = patient_data.assign(gender=np.where(patient_data['sex']<0, 'male', 'female'))
print(patient_data.head(10))

         id      name       dob       sex     state  gender
0  0.588686  1.333191  2.559850  0.034903  0.232650  female
1  1.606597  0.168722  0.275342 -0.630618 -1.394375    male
2  0.912688 -1.273570  1.140656 -0.788166  0.265234    male
3 -0.372272  1.174600  0.300846  1.959095 -1.083678  female
4  0.413863  0.047342  0.279944  1.595921  0.585318  female
5 -1.147525  0.533511 -0.415619 -0.473355  1.045857    male
6 -0.602340 -0.379730  0.032407  0.946186  0.581590  female
7 -0.234415 -0.272176 -1.160130 -0.759835 -0.654381    male
8 -0.149291  1.986763 -0.675469 -0.295829 -2.052398    male
9  0.600571 -1.577449 -0.906590  1.042335 -2.104928  female

答案 1 :(得分:0)

您需要将自定义功能更改为

def malefemale(x):  
   if x < 0:
     return "Male"
   else:
     return "female"

然后只需应用自定义函数

patient_data['gender'] = patient_data['sex'].apply(malefemale)