Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中的日期/时间多行转换问题_Python_Pandas - Fatal编程技术网

python中的日期/时间多行转换问题

python中的日期/时间多行转换问题,python,pandas,Python,Pandas,我正在玩一个计数程序,它允许我将数据导出到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

我正在玩一个计数程序,它允许我将数据导出到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 occours运行时,用数据的上一个值填充这些值 然后填写日期 然后删除所有值为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
您所需要做的就是将日期和数据结合起来,并将其设置为日期时间