gpt4 book ai didi

python - Pandas 中日期列的最大值/最小值,列包括 nan 值

转载 作者:太空宇宙 更新时间:2023-11-03 13:32:41 26 4
gpt4 key购买 nike

我正在尝试在 pandas 数据框中创建一个新列,其中包含来自其他两个日期列的最大(或最小)日期。但是,当其中任何一列中的任何位置都存在 NAN 时,整个最小/最大列将变为 NAN。是什么赋予了?当使用数字列时,这工作正常......但是对于日期,新列都是 NAN。下面是一些示例代码来说明问题:

df = pd.DataFrame(data=[[np.nan,date(2000,11,1)], 
[date(2000,12,1), date(2000,9,1)],
[date(2000,4,1),np.nan],
[date(2000,12,2),np.nan]], columns=['col1','col2'])

df['col3'] = df[['col1','col2']].max(axis=1)

我知道这可以通过 loc 和 <、>、isnull 等的组合来完成。但是如何让它与常规的最大/最小函数一起工作呢?

最佳答案

您正在将 date 对象存储在您的列中,如果您转换为 datetime 那么它会按预期工作:

In[10]:
df['col1'] = pd.to_datetime(df['col1'])
df['col2'] = pd.to_datetime(df['col2'])
df

Out[10]:
col1 col2 col3
0 NaT 2000-11-01 NaN
1 2000-12-01 2000-09-01 NaN
2 2000-04-01 NaT NaN
3 2000-12-02 NaT NaN

In[11]:
df['col3'] = df[['col1','col2']].max(axis=1)
df

Out[11]:
col1 col2 col3
0 NaT 2000-11-01 2000-11-01
1 2000-12-01 2000-09-01 2000-12-01
2 2000-04-01 NaT 2000-04-01
3 2000-12-02 NaT 2000-12-02

如果你只是做了:

df['col3'] = df['col1'].max()

这引发了一个 TypeError: '>=' not supported between instances of 'float' and 'datetime.date'

NaN 值导致 dtype 被提升为 float 因此返回 NaN。如果您没有缺失值,那么它将按预期工作,如果您有缺失值,那么您应该将 dtype 转换为 datetime 以便将缺失值转换为 NaT 以便 max 正常工作

关于python - Pandas 中日期列的最大值/最小值,列包括 nan 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44304419/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com