【发布时间】:2022-01-04 14:50:59
【问题描述】:
我有测量值事件相关。因此,每分钟的数据量并不相同。为了能够更好地处理这些数据,我的目标是每分钟获取第一行值。
我从 csv 导入数据的时间如下所示:
时间
11.11.2011 11:11
11.11.2011 11:11
11.11.2011 11:11
11.11.2011 11:12
11.11.2011 11:12
11.11.2011 11:13
其他值是温度。 一个主要问题是以正确的格式导入时间。 我试图在这个社区的帮助下解决这个问题:
with open('my_file.csv','r') as file:
for line in file:
try:
time = line.split(';')[0] #splits the line at the comma and takes the first bit
time = dt.datetime.strptime(time, '%d.%m.%Y %H:%M')
print(time)
except:
pass
然后我导入温度列并像这样加入它们:
df = pd.read_csv("my_file.csv", sep=';', encoding='latin-1')
df=df[["time", "T1", "T2", "DT1", "DT2"]]
当我打印数据的 dtypes 时,时间是 datetime64[ns] 和其他对象。
我尝试了 groupby 和 resample 的不同选项。像下面这样:
df=df.groupby([pd.Grouper(key = 'time', freq='1min')])
df.resample('M')
错误消息中指出的一个主要问题是时间的数据类型不适合分组,...因为它不是 DatetimeIndex。 所以我尝试将日期转换为 DatetimeIndex,如下所示:
df.index = pd.to_datetime(daten["time"].index, format='%Y-%m-%d %H:%M:%S')
但后来我重新保存了从 1970-01-01 开始的索引编号,所以我不太确定是否可以使用不规则数据进行这种转换。
如果没有这种转换,我也会收到消息<pandas.core.groupby.generic.DataFrameGroupBy object at 0x0000026938A74850>
当我尝试调用我的数据框时,消息会显示出来,并且当像这样将其保存到 csv 时:
df.to_csv('04_01_DTempminuten.csv', index=False, encoding='utf-8', sep =';', date_format = '%Y-%m-%d %H:%M:%S')
我收到相同的消息,或者只收到一行带有 Dezimalnumber 而不是时间的消息。
有没有人有想法如何处理这些不规则数据以每分钟获取一行值?
感谢您阅读我的问题。我真的很感谢任何想法。
【问题讨论】:
-
可以与样本数据共享您的文件吗?
标签: python pandas time-series pandas-groupby