我有以下数据集:
ID AAA BBB CCC DDD
1234 {'2015-01-01': 1} {'2016-01-01': 1, {'2015-01-02': 1} {'2016-01-02': 1}
'2016-02-15': 2}
1235 {'2017-11-05': 1, {'2018-01-05': 1} NaN {'2017-01-06': 1}
'2018-06-05': 1}
在单元格中,“key”是某人住院的日期,“value”是天数
我需要为住院创建一个新列(“是”或“否”)
条件为“是”:
例如,如果[AAA或BBB]的日期为2020年1月1日。如果是,[CCC或DDD]中的日期应为2020年1月2日
期望输出:
ID AAA BBB CCC DDD Hospitalized
1234 {'2015-01-01': 1} {'2016-01-01': 1, {'2015-01-02': 1} {'2016-01-02': 1} Yes
'2016-02-15': 2}
1235 {'2017-11-05': 1, {'2018-01-05': 1} NaN NaN No
'2018-06-05': 1}
1236 {'2017-11-05': 1, {'2018-01-05': 1} NaN {'2018-01-06': 1} Yes
'2018-06-05': 1}
我尝试了下面的代码,但它捕获了日期是否存在,但没有捕获时间戳
df['hospitalized'] = (df
.apply(lambda r: 'yes' if (1 if pd.notna(r.loc[['AAA', 'BBB']]).any() else 0) +
(1 if pd.notna(r.loc[['CCC', 'DDD']]).any() else 0) > 1
else 'no', axis=1))
如有任何建议,将不胜感激。谢谢
df:
尝试:
df:
相关问题 更多 >
编程相关推荐