首页 > 解决方案 > 在我的代码中使用条件在熊猫数据框中生成新列

问题描述

代码的结果是

                  iccid      ipAddress  ...              dateSessionEnded 
0  89610185001538644952  10.129.22.157  ...  2020-11-27 12:37:27.270+0000   
1  89610185001538532829   10.129.60.14  ...                          None  
2  89610185002408618430  10.137.53.218  ...                          None   
3  89610185002413572052  10.128.88.115  ...  2020-11-29 03:46:07.910+0000   
4  89610185002407603007  10.136.93.119  ...  2020-11-26 00:01:37.018+0000   

我正在尝试制作一个条件语句来添加另一列,其状态为如果数据会话结束为无,则如果它有一个日期值,则 sim 是“InSession”,然后是“Not In Session”。到目前为止,没有任何人能提供帮助。

亲切的问候,

标签: python-3.xpandas

解决方案


有多种方法可以完成此类任务。例如,经典的:

df.loc[~df.dateSessionEnded.isnull(), 'newcol'] = 'Not In Session'
df.loc[df.dateSessionEnded.isnull(), 'newcol'] = 'In Session'

或使用numpy.where

import numpy as np
df['newcol'] = np.where(df.dateSessionEnded.isnull(), 'In Session', 'Not In Session')

或使用map(它也适用于replace):

df['newcol'] = (df.dateSessionEnded.isnull()).map({True: 'In Session', False:'Not In Session'})

where使用replace

df['newcol'] = df.dateSessionEnded.where(lambda x: x.isnull(), 'Not In Session').replace({None:'In Session'})

等等...


输出:

                  iccid      ipAddress            dateSessionStarted                dateSessionEnded          newcol  
0  89610185001538644952  10.129.22.157  2020-11-26 05:49:56.270+0000    2020-11-27 12:37:27.270+0000  Not In Session  
1  89610185001538532829   10.129.60.14  2020-12-04 03:50:47.105+0000                            None      In Session  
2  89610185002408618430  10.137.53.218  2020-12-03 20:32:08.436+0000                            None      In Session

数据

df = pd.DataFrame([
    {'iccid': '89610185001538644952', 'ipAddress': '10.129.22.157', 'dateSessionStarted': '2020-11-26 05:49:56.270+0000', 'dateSessionEnded': '2020-11-27 12:37:27.270+0000'},
    {'iccid': '89610185001538532829', 'ipAddress': '10.129.60.14', 'dateSessionStarted': '2020-12-04 03:50:47.105+0000', 'dateSessionEnded': None},
    {'iccid': '89610185002408618430', 'ipAddress': '10.137.53.218', 'dateSessionStarted': '2020-12-03 20:32:08.436+0000', 'dateSessionEnded': None}
])

推荐阅读