gpt4 book ai didi

python - Pandas groupby 应用日期时间异常

转载 作者:太空宇宙 更新时间:2023-11-03 21:33:29 25 4
gpt4 key购买 nike

在 Jupyter 中试验 Pandas 时,我注意到非常奇怪的症状。我将其减少到展示症状的最低限度代码:

import pandas as pd
import numpy as np
from datetime import datetime

df = pd.DataFrame({
'A': ['a', 'b', 'c'],
'B': [datetime(2018, 11, 1), datetime(2018, 11, 2), datetime(2018, 11, 3) ]
})
df

A B
0 a 2018-11-01
1 b 2018-11-02
2 c 2018-11-03

def process(gdf):
return pd.Series({
'C': datetime(2018, 11, 5)
})
df2 = df.groupby(['A']).apply(process).reset_index()
df2

A C
0 a 1541376000000000000
1 b 1541376000000000000
2 c 1541376000000000000

df2['C']

0 1541376000000000000
1 1541376000000000000
2 1541376000000000000
Name: C, dtype: int64

如您所见,C 列最终是 int64 类型,而不是预期的 datetime64[ns] 类型。但是,如果我没有 B 列,则 C 列最终会正确地变为 datetime64[ns]

df = pd.DataFrame({
'A': ['a', 'b', 'c'],
# 'B': [datetime(2018, 11, 1), datetime(2018, 11, 2), datetime(2018, 11, 3) ]
})
df

A
0 a
1 b
2 c

def process(gdf):
return pd.Series({
'C': datetime(2018, 11, 5)
})
df2 = df.groupby(['A']).apply(process).reset_index()
df2

A C
0 a 2018-11-05
1 b 2018-11-05
2 c 2018-11-05

df2['C']

0 2018-11-05
1 2018-11-05
2 2018-11-05
Name: C, dtype: datetime64[ns]

我不知道发生了什么。有人有什么想法吗?我正在使用 Python 3.6 和 Pandas 0.23.1

最佳答案

首先,这似乎是错误。

在我看来,可以为每个组创建新列,并且返回的不是系列,而是gdp组:

def process(gdf):
gdf['C'] = datetime(2018, 11, 5)
return gdf

df2 = df.groupby(['A']).apply(process)
print (df2)
A B C
0 a 2018-11-01 2018-11-05
1 b 2018-11-02 2018-11-05
2 c 2018-11-03 2018-11-05

关于python - Pandas groupby 应用日期时间异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53387552/

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