读取带有列名称为行的csv文件并编辑日期时间

时间:2018-05-30 18:26:47

标签: python pandas datetime

我有一个巨大的数据文件,看起来像这样。我在“名称”列中只显示了一些参数。我有24个不断重复。

raw=pd.read_csv('example.csv', parse_dates=True, usecols=[0,1,2,3])
raw['Date']=pd.to_datetime(raw['Date']+''+raw['Time'])
raw=raw.drop(['Time'], axis=1)
raw1=raw.pivot(index='Date', columns='Name', values='Value')

我想对此做两件事:

  1. 每组的正确日期和时间是为ME_POW_1记录的日期和时间。因此,对于索引0到3,我想用ME_POW_1的数据和时间来更正所有数据的日期和时间,我想对所有数据进行更新。

  2. “名称”列中的名称应该旋转到各个列。所需的输出是:

    日期时间FAN_RFB KW_TOTAL ME_POW_1 ME_POW_2  2018-04-08 23:59:56 1 186 8618 8315  2018-04-09 00:00:09 1 185 8467 8350  2018-04-09 00:00:16 1 182 8783 8422  2018-04-09 00:00:28 1 184 8545 8370

  3. 我认为第二种可能是使用pd.pivot(index ='date',columns ='Name',values ='Values')。一旦我可以得到类似的日期,那么我可以使用这段代码来获得所需的输出:

    >>> import arcpy
    >>> arcpy.SelectLayerByAttribute_management("Customers", "NEW_SELECTION", "Year=1989")
    <Result 'Customers'>
    

    但我不知道如何完成第一项任务,根据ME_POW_1的日期和时间更改每组的日期。有人可以指导我吗?

1 个答案:

答案 0 :(得分:1)

如果为每4行重复let content = null; if (props.selectedReason.reasonId === 2) { content = <TextField ... /> : } return ( <div className='row'> <div className='col-xs-12'>{content}</div> </div> ); 并且每个组包含pattern行,则解决方案正常工作:

我认为您可以先为ME_POW_1的{​​{1}}和parse_dates列添加参数date

time

然后通过过滤datetimes行获取df=pd.read_csv('example.csv', usecols=[0,1,2,3], parse_dates=[['Date','Time']]) print (df) Date_Time Name Value 0 2018-04-07 02:34:43 FAN_RFB 1 1 2018-04-08 23:59:58 KW_TOTAL 186 2 2018-04-08 23:59:56 ME_POW_1 8618 3 2018-04-08 23:59:56 ME_POW_2 8315 4 2018-04-07 02:34:43 FAN_RFB 1 5 2018-04-09 00:00:07 KW_TOTAL 185 6 2018-04-09 00:00:09 ME_POW_1 8467 7 2018-04-09 00:00:09 ME_POW_2 8350 8 2018-04-07 02:34:43 FAN_RFB 1 9 2018-04-09 00:00:15 KW_TOTAL 182 10 2018-04-09 00:00:16 ME_POW_1 8783 11 2018-04-09 00:00:16 ME_POW_2 8422 12 2018-04-07 02:34:43 FAN_RFB 1 13 2018-04-09 00:00:26 KW_TOTAL 184 14 2018-04-09 00:00:28 ME_POW_1 8545 15 2018-04-09 00:00:28 ME_POW_2 8370 并按reset_index创建默认索引:

Date_Time

第一个位置的每个ME_POW_1行和最后insert个新列的最后一个数据透视点:

s = df.loc[df['Name'] == 'ME_POW_1', 'Date_Time'].reset_index(drop=True)
print (s)
0   2018-04-08 23:59:56
1   2018-04-09 00:00:09
2   2018-04-09 00:00:16
3   2018-04-09 00:00:28
Name: Date_Time, dtype: datetime64[ns]