【问题标题】:Finding the mean of a data column for a specified date-time range in pandas (python)在熊猫(python)中查找指定日期时间范围的数据列的平均值
【发布时间】:2021-04-20 01:41:09
【问题描述】:

这个论坛和一般编码的新手,所以如果这是一个重复的问题,我很抱歉,如果是这样,我会删除!

我目前正在使用 python 中的 pandas 并尝试在我的数据框列之一中找到平均值。

我已经创建了我的数据框,并将其称为“数据”:data=pd.DataFrame()

第一列是日期时间列,我设置如下,将其转换为日期时间:

data.iloc[:,0]= pd.to_datetime(data.iloc[:,0], format="%y/%m/%d %H:%M:%S") #yy/mm/dd hh:mm:ss

我已经能够使用 .mean() 函数为我感兴趣的数据列找到整列的平均值:

data["new6"].mean()

但是,我正在尝试查找此列的平均值,但仅针对特定日期时间范围(并且日期时间数据位于不同的列中)。

这样可以吗?

另一种选择是创建一个较小的数据帧作为当前数据帧的子集。在这里,我将新数据框命名为“data_d.t.specified”,并且只包含所需日期时间范围内的列。

data_d.t.specified = data.drop(data[(0 >= index value here) | 0 <= index value here])

我已经尝试过使用日期时间格式,但在这里使用字符串时遇到了问题,因此选择使用感兴趣的日期时间的索引值。但是,我似乎无法找出我想要的特定日期时间的索引值。 我一直在使用以下代码,其中日期时间列是第 0 列,但它打印的唯一内容是 []

print(data[data[0]=="20/08/23 13:05:02"].index.values)

这是我所说的日期时间列的问题吗?还是我没有正确地将其转换为日期时间?任何帮助将不胜感激!

【问题讨论】:

  • 也许尝试将== 比较中的单个字符串转换为Datetime 对象。另外,我强烈推荐阅读这篇post

标签: python pandas dataframe datetime mean


【解决方案1】:

由于您将其设为日期时间列,因此您可以轻松地使用 .loc 来关注日期范围:

df.loc[(df['Dates'] >= datetime(2020, 7, 21) & df['Dates'] <= datetime(2021, 1, 14)), 'col_to_mean'].mean()

地点:

  • 'Dates' 是日期为.loc 的列的名称
  • datetime(2020, 7, 21) 是您要以年、月、日格式拆分的日期。您可以轻松添加时间。请参阅日期时间docs
  • 'col_to_mean' 是您想要平均的列的名称

只需将逻辑调整为您想要的任何日期范围

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多