- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
python 3.6.0
我正在导入一个带有 Unix 时间戳的文件。
我将它们转换为 Pandas 日期时间并四舍五入为 10 分钟(12:00、12:10、12:20,...)
数据是在指定时间段内收集的,但来自不同的日期。
对于我们的分析,我们希望在进行重采样之前将所有日期更改为相同的日期。
目前我们有一个reduce_to_date
,它是所有日期的目标。
current_date = pd.to_datetime('2017-04-05') #This will later be dynamic
reduce_to_date = current_date - pd.DateOffset(days=7)
我试图找到一种简单的方法来更改系列中的日期而不更改时间。
我试图通过 .strftime()
避免冗长的转换。
我几乎已经确定的一种方法是将 reduce_to_date
和 df['Timestamp']
差异添加到 df['Timestamp']
。但是,我试图使用 .date()
函数,它只适用于单个元素,不适用于系列。
好!
passed_df['Timestamp'][0] = passed_df['Timestamp'][0] + (reduce_to_date.date() - passed_df['Timestamp'][0].date())
不好
passed_df['Timestamp'][:] = passed_df['Timestamp'][:] + (reduce_to_date.date() - passed_df['Timestamp'][:].date())
AttributeError: 'Series' object has no attribute 'date'
我可以使用一个循环:
x=1
for line in passed_df['Timestamp']:
passed_df['Timestamp'][x] = line + (reduce_to_date.date() - line.date())
x+=1
但这会引发警告:
C:\Users\elx65i5\Documents\Lightweight Logging\newmain.py:60: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
目标是让所有日期都相同,但保留原来的时间。
如果我们可以简单地指定更换日期,那就太好了。
如果我们可以使用数学并根据时间增量更改每个日期,同样很棒。
我们能否在不使用 .strftime() 或冗长的过程的情况下以矢量化方式完成此操作?
最佳答案
如果我没理解错的话,你可以简单地减去一个偏移量
passed_df['Timestamp'] -= pd.offsets.Day(7)
演示
passed_df=pd.DataFrame(dict(
Timestamp=pd.to_datetime(['2017-04-05 15:21:03', '2017-04-05 19:10:52'])
))
# Make sure your `Timestamp` column is datetime.
# Mine is because I constructed it that way.
# Use
# passed_df['Timestamp'] = pd.to_datetime(passed_df['Timestamp'])
passed_df['Timestamp'] -= pd.offsets.Day(7)
print(passed_df)
Timestamp
0 2017-03-29 15:21:03
1 2017-03-29 19:10:52
使用strftime
虽然这并不理想,但我想说明一点,您绝对可以使用 strftime
。当您的列是日期时间时,您可以通过带有 dt.strftime
的 dt
日期访问器来使用 strftime
。您可以创建一个动态列,在其中指定目标日期,如下所示:
pd.to_datetime(passed_df.Timestamp.dt.strftime('{} %H:%M:%S'.format('2017-03-29')))
0 2017-03-29 15:21:03
1 2017-03-29 19:10:52
Name: Timestamp, dtype: datetime64[ns]
关于python - 如何更改日期而不是数据框列中时间戳的时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43371778/
给定一个带有多个 date_time 戳的字符串,我想 提取第一个戳及其前面的文本 候选字符串可以有一个或多个时间戳 后续的 date_time 戳记将被 sep="-" 隔开 后续date_time
是否可以合并从相机拍摄的文本和照片?我想在照片上标记日期和时间,但我在 Google 上找不到任何内容。 最佳答案 使用下面的代码来实现你所需要的。 Bitmap src = Bitm
有没有办法通过 Graph API 戳另一个用户?基于this post ,并使用 Graph Explorer ,我发布到“/USERID/pokes”,我已经授予它(Graph API 应用程序和
我有两个向左浮动的元素。一个是 body 的第一个 child ,另一个是容器的第一个 child ,容器是 body 的第二个 child 。 ...
我是一名优秀的程序员,十分优秀!