For*_*ded 5 python lambda strftime pandas
我正在尝试使用lambda和strftime更改数据框中日期时间列的格式,如下所示
df['Date Column'] = df['Date Column'].map(lambda x: x.strftime('%m/%d/%Y'))
Run Code Online (Sandbox Code Playgroud)
但是,由于我在某些字段中具有空值,这给我一个错误。我不能删除这些空行,因为其他列中的数据仍然需要它们。是否有办法解决此错误而不删除null。
也许像
df['Date Column'].map(lambda x: x.strftime('%m/%d/%Y') if x != null else "")
Run Code Online (Sandbox Code Playgroud)
?
我使用的方法是删除null,格式化列,然后将其合并回原始数据集,但这似乎是一种效率很低的方法。
你不应该检查 nan/nat (un)equality,但.notnull()应该工作,它对我有用:
s = pd.date_range('2000-01-01', periods=5).to_series().reset_index(drop=True)
s[2] = None
s
0 2000-01-01
1 2000-01-02
2 NaT
3 2000-01-04
4 2000-01-05
dtype: datetime64[ns]
s.map(lambda x: x.strftime('%m/%d/%Y') if pd.notnull(x) else '')
0 01/01/2000
1 01/02/2000
2
3 01/04/2000
4 01/05/2000
dtype: object
Run Code Online (Sandbox Code Playgroud)
这返回与@Alexander 和@Batman 的答案相同,但更明确。对于大系列,它也可能稍微慢一些。
或者,您可以使用.dtaccesor。空值将被格式化为NaT.
s.dt.strftime('%m/%d/%Y')
0 01/01/2000
1 01/02/2000
2 NaT
3 01/04/2000
4 01/05/2000
dtype: object
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6784 次 |
| 最近记录: |