【发布时间】:2017-01-17 06:21:14
【问题描述】:
我有一个这样的 CSV 文件:
id,timestamp
1,2015-03-02
2,2015-03-03
然后我将其加载到这样的 DataFrame 中:
df = pd.read_csv('file.csv', index_col=['id'], parse_dates=['timestamp'])
然后我按id分组,选择时间戳列,并应用一个函数返回时间戳-天
df.groupby(level='id')['timestamp'].apply(lambda x: x - pd.Timedelta('1 days'))
结果:
id
1 2015-03-01
2 2015-03-02
Name: timestamp, dtype: datetime64[ns]
但是,当我将 unique() 应用于 groupby 对象时,时间戳会变为意外格式。
df.groupby(level='id')['timestamp'].unique().apply(lambda x: x - pd.Timedelta('1 days'))
id
1 [2015-03-02T00:00:00.000000000]
2 [2015-03-03T00:00:00.000000000]
Name: timestamp, dtype: object
如何维护日期的格式?
【问题讨论】:
-
问题是
unique将返回一个包含所有唯一值的数组。你想达到什么目的?这似乎是XY problem 的一个实例。 -
@root tl;dr 我实际上是在尝试将两个 DataFrame 连接在一起,df1 和 df2。 df1 有一个时间戳列,df2 有一个时间戳。但是,在 df1 中,每个索引都有多个实例,而在 df2 中,每个索引只有一个实例。因此,加入后,我留下了一个 DataFrame,其中每个索引都有 df2 中时间戳列的重复值。这就是我采用 unique() 的原因,因为我只想要唯一的时间戳。我正在对 id 进行分组,因为我想要每个 id 的所有时间戳。然后对于每个时间戳,我都在应用这个函数。但我很困惑为什么日期时间格式会发生变化。
-
你能发布一个可重现的数据集(有重复)和所需的数据集吗?