【发布时间】:2019-11-29 19:24:59
【问题描述】:
我有一个如下所示的数据框:
import pandas as pd
import numpy as np
data = [[np.nan, np.nan, np.nan], [np.nan, '1987-09-01', np.nan], [np.nan, '1987-09-01', '1988-09-01']]
df = pd.DataFrame(data, columns = ['1', '2', '3'])
我的目标如下:
- 对于第一行,我想返回 nan 值
- 对于第二行,我想返回 日期
- 对于第三行,我想返回 最早的日期 ('1987-09-01') 并返回包含两个的行的 index值(在本例中为 2)
第一次尝试
df.stack().groupby(level = 0).first()
但这会导致只返回每行遇到的第一个日期,并删除完整的 nan 行。
提前感谢您的帮助。如果有任何问题,请告诉我!
【问题讨论】:
-
使用
dropna=false时使用堆栈df.stack(dropna=False).groupby(level = 0).first(),这不会删除完整的 nan 行,但是,它无法找到最小日期,因为日期是字符串。