python - python中的日期/时间多行转换问题
问题描述
我正在玩一个允许我将数据导出到 csv 的统计程序。我遇到的问题是数据以我不知道如何转换为正常日期时间格式以进行分析的格式提供。
输入文件在使用 pandas 的 read_csv 加载后提供以下形式的数据:
index data count
1 11/15/20 nan
2 16:43:23.2411 1
3 11/14/20 nan
4 18:53:33.124 1
5 4:33:12.451 -1
6 1:18:53.121 1
有人可以帮助我将数据重新排列为更传统的日期时间格式,例如:
index datetime count
1 11/15/20 16:43:23.2411 1
2 11/14/20 18:53:33.124 1
3 11/14/20 4:33:12.451 -1
4 11/14/20 1:18:53.121 1
我发现我认为唯一有用的是 pandas unstack 函数,但这并没有按预期工作。
data_timestamps = pd.read_csv("load_datetime.csv")
t = data_timestamps.unstack(level=0)
也许我没有正确使用它。尽管如此,关于如何最好地转换它的任何想法?
解决方案
设置工作,注意这count
是一个函数,所以避免这个名字是一件好事。
import pandas as pd
import numpy as np
datain = { 'index' : [1,2,3,4,5,6], 'data': ['11/15/20', '16:43:23.2411', '11/14/20 ', '18:53:33.124', '4:33:12.451', '1:18:53.121'], 'value' : [np.nan, 1,np.nan, 1 , -1,1]}
df = pd.DataFrame(datain)
这给了我们
index data value
0 1 11/15/20 NaN
1 2 16:43:23.2411 1.0
2 3 11/14/20 NaN
3 4 18:53:33.124 1.0
4 5 4:33:12.451 -1.0
5 6 1:18:53.121 1.0
做这项工作
df['date'] = np.where(df['value'].shift(1).isna(), df.data.shift(1), None)
df['date'] = df['date'].ffill()
df= df[~(df['value'].isna())]
所以在出现Nan时用数据的前一个值填写值然后填写日期然后删除所有具有NaN值行的内容给我们
index data value date
1 2 16:43:23.2411 1.0 11/15/20
3 4 18:53:33.124 1.0 11/14/20
4 5 4:33:12.451 -1.0 11/14/20
5 6 1:18:53.121 1.0 11/14/20
您需要做的就是结合日期和数据并将其放入日期时间。
推荐阅读
- ios - 向下滚动时带有不需要的额外对象的 UITableViewCell
- git - git安装失败,Windows 10,CryptStringToBinaryW
- google-cloud-platform - 谷歌云:/Users/Me/.zshrc:8: unmatched '
- visual-studio - 为什么每次按下工具栏按钮时我的 Visual Studio 都会崩溃?
- powershell - PowerShell:如何只返回一个 [PSCustomObject] 而不是其中包含其他内容的数组?
- r - 如何在 Windows 10 上为 R 创建用户库?
- javascript - 点击按钮后如何调用函数并显示结果
- amazon-web-services - aws chime deploy 错误:无法创建/更新堆栈:堆栈名称服务员 StackCreateComplete 失败:服务员遇到终端故障状态
- python-3.x - 将时间序列数据剪裁到最近的小时或最近的一天
- python - 导入具有相同命名函数的多个模块而不会发生命名空间冲突