【问题标题】:How to access first and last timestamp in dataframe如何访问数据框中的第一个和最后一个时间戳
【发布时间】:2015-07-07 12:40:58
【问题描述】:

我需要在我的数据框中包含第一个和最后一个时间戳(我将它们用作索引)的字符串,以便以后使用。我已经在互联网上搜索过,但没有找到。

这就是我阅读 .csv 文件的方式

with open(filename, 'r') as csvfile:
        df = pandas.read_csv(csvfile, 
                parse_dates=True, 
                index_col=0, 
                sep=';', 
                skipinitialspace=True, 
                low_memory=False, 
                names=range(0,n))

我使用 df.iloc[0] 进行了尝试,但无法正确使用。如何获取时间戳(作为字符串)?

示例 csv:

                       1    2
2015-07-02 21:40:00 -2.7 -2.7
2015-07-02 21:50:00 -2.5 -2.5
2015-07-02 22:00:00 -2.5 -2.5

我正在尝试获取第一个 (2015-07-02 21:40:00) 和最后一个 (2015-07-02 22:00:00) 时间戳。

【问题讨论】:

  • 抱歉,df.iloc[0]df.iloc[-1] 会返回第一行和最后一行,你在说什么字符串?
  • 我使用时间戳作为索引,我想获取这些索引(作为字符串)。我更新了帖子
  • 那么您是否只关注df.index[0]df.index[-1]
  • 您想要第一个和最后一个 index,还是想要最早和最新的 timestamp
  • 您的问题对我来说非常不清楚,请在您的问题中发布您的 df 的前几行以及您想要实现的确切,而不是作为评论

标签: python python-3.x pandas


【解决方案1】:

你想要什么样的字符串?

df.index.min()
df.index.max()

给你类似的东西

In [8]: df.index.min()
Out[8]: Timestamp('2000-01-01 00:00:00')

不知道它的输出是否有任何标志。就个人而言,我只是做了一些——可能是愚蠢的——硬编码的东西,比如

Maxi_date1 = str(df.index.max())
Maxi_date = Maxi_date1[0:10]

仅获取例如YYYY-MM-DD

编辑

我自己又遇到了一种情况,我非常需要这个功能,由于这个 Q/A 有一些观点,这里有一个更新,让它更完整:

大多数情况下,我只需要特定的时间部分,例如那一年。虽然上述方法也有效(只需 [0:3] 即可获得年份),但使用内置函数可能会更好。

仅获取年份或月份:

Maxi_date = df.index.min()
Maxi_year = Maxi_date.year
Maxi_mon = Maxi_date.month

等等,如here所列。

【讨论】:

  • 不错的更新!我建议删除您只使用子字符串的原始部分。这将为观众提供更完整的 Q/A 帖子。
猜你喜欢
  • 2022-09-24
  • 1970-01-01
  • 1970-01-01
  • 2023-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多