python - 如何使用 pandas python 创建时间组
问题描述
在这里,我有一个数据集,其中包含三个带有日期和时间的输入。在这里,我不是在模式时间收集我的数据。在这里我首先想要的是把我的开始时间设置为 0 并将其他时间转换为分钟。我的代码是:
data = pd.read_csv('data6.csv',"," )
data['date'] = pd.to_datetime(data['date'] + " " + data['time'], format='%d/%m/%Y %H:%M:%S')
lastday = data.loc[0, 'date']
def convert_time(x):
global lastday
if x.date() == lastday.date():
tm = x - lastday
return tm.total_seconds()/60
else:
lastday = x
return 0
data['time'] = data['date'].apply(convert_time)
然后我得到了结果:
但我所期望的是:我想从开始时间 0 开始设置每分钟的时间,然后如果列当时没有值,则输入 0 值。如果附加了值,则将值与时间列一起放入以分钟为单位。
如果是新的一天,则再次将开始时间设置为 0,然后以分钟为单位开始值。
这就像一分钟数据的时间组。
Date time in min X1 X2 X3
10/3/2018 1 63 0 0
2
3
4 if no values then put 0 values into that
5 column till the values available
6 Then put it that column values
7
8
9
10
11
12
13
10/4/2018 0 120 30 60
1 0 0 0
我的 csv 文件:
我的 csv 链接:
新代码后,我的时间显示:
解决方案
Pandas 有这方面的功能;resample
从日期时间索引。如果您的数据在 1 分钟内有多个值,则必须提供聚合功能。下面的示例将对这些值求和,很容易改变它。
如果这不是您想要的,请纠正我。
代码
# Read CSV
csv_url = 'https://docs.google.com/spreadsheets/d/1WWq1qhqi4bGzNir_svQV7VstBkGbocToipPCY83Cclc/gviz/tq?tqx=out:csv&sheet=1512153575'
data = pd.read_csv(csv_url)
data['date'] = pd.to_datetime(data['date'] + " " + data['time'], format='%d/%m/%Y %H:%M:%S')
# Resample to 1 minute (T is minute)
df = data.set_index('date') \
.resample('1T') \
.sum() \
.fillna(0)
# Optional ugly one-liner to start index at 0, and 1 row per minute, restart at day start
df.index = ((df.index - pd.to_datetime(df.index.date)).total_seconds() / 60).astype(int)
输出
df.head()
x1 x2 x3 Unnamed: 5 Unnamed: 6 Unnamed: 7
date
2018-03-10 06:15:00 63 0 0 0.0 0.0 0.0
2018-03-10 06:16:00 0 0 0 0.0 0.0 0.0
2018-03-10 06:17:00 0 0 0 0.0 0.0 0.0
2018-03-10 06:18:00 0 0 0 0.0 0.0 0.0
2018-03-10 06:19:00 0 0 0 0.0 0.0 0.0
输出 2 带有丑陋的单线
x1 x2 x3 Unnamed: 5 Unnamed: 6 Unnamed: 7
date
0 63 0 0 0.0 0.0 0.0
1 0 0 0 0.0 0.0 0.0
2 0 0 0 0.0 0.0 0.0
3 0 0 0 0.0 0.0 0.0
4 0 0 0 0.0 0.0 0.0
5 0 0 0 0.0 0.0 0.0
推荐阅读
- html - 如何正确使用
- c# - 升级到 Server 2019 后 WCF 服务编码单引号
- google-cloud-platform - 有没有人在 GKE、Google Game Servers 或 Agones 中为 iPv6 找到了一个好的解决方案?
- ios - Swift - 自动布局约束 UIView-Encapsulated-Layout-Width
- css - 打开和关闭悬停的文本阴影过渡
- r - 当 x 中没有 NA 值时,scale_x_continues 将 NA 值发送到 trans
- reactjs - 在 azure app services 中部署了我的 asp.net core react 应用程序,但没有显示任何内容
- c# - LazyCache:如何防止将特定项目添加到缓存中
- python - 从数据框列创建一维数组
- php - 使用 GET 访问 URL 中的数据并使用 POST 将其发送到数据库