【问题标题】:Date Time Series wise grouping of data and distribution数据和分布的日期时间序列明智分组
【发布时间】:2015-09-21 00:15:36
【问题描述】:

我正在尝试将日期时间序列与存储库数据合并,同时按名称分组并对值求和。

File1.csv 

Timeseries,Name,count
07/03/2015 06:00:00,Paris,100
07/03/2015 06:00:00,Paris,600
07/03/2015 06:00:00,Paris,700
07/03/2015 06:00:00,London,200
07/03/2015 06:00:00,London,100
07/03/2015 06:00:00,London,500
07/03/2015 06:00:00,Dublin,300
07/03/2015 06:00:00,Dublin,400
07/03/2015 06:00:00,Dublin,400

输出

Master_file.csv (append mode)

    Name,Timeseries(n-1)Timeseries(n)#put the datetime series as header and put       
    Paris,300,1400      #Sum of all the values with same Name
    London,200,800
    Dublin,400,1100

Program 

import pandas as pd 
import numpy as np

df = pd.read_csv('/home/lat_lon1.csv')
df1 = pd.read_csv('/home/lat_lon_master.csv')


gp = df.groupby('Name')['date timeseries'].sum().reset_index() 
df1.merge(gp, on='Name')

我无法将date time 列更改为标题并将正确的值放在下面。那些未找到的Names 可以被赋予 NAN 并在下一次迭代中替换。

【问题讨论】:

  • 不清楚你在这里尝试什么,首先你的列被命名为“日期时间”,另外它的 dtype 将是str,因为你没有告诉read_csv它应该尝试解析它作为日期时间,第三,您只能在 numeric 和 str dtypes 上调用 sum 那么您期望这里的输出是什么?

标签: python file datetime pandas


【解决方案1】:

请查看 python pandas 数据框文档 Click here 这是您正在查看的代码。

输出

Timeseries Name count 07/03/2015 06:00:00 Dublin 1100 07/03/2015 06:00:00 London 800 07/03/2015 06:00:00 Paris 1400

   #!/bin/python
    import pandas as pd
    import numpy as np
    df=pd.read_csv('/home/saiharsh/Documents/Crowd Street/Transition_Data/Telecom_7.csv') #Please enter the file Location
    gp=df.groupby('Name').sum().reset_index()
    flag=0
    for i in gp['Name']:
        if flag==1:
            time=df['Timeseries'][df['Name']==i]
            time=time.tail(1)
            frames=[time1,time]
            time1=pd.concat(frames)
        else:
            time1=df['Timeseries'][df['Name']==i]
            time1=time1.tail(1)
            flag=1
    time1=time1.reset_index(drop=True)
    result=pd.concat([time1,gp],axis=1,join='inner')
    result=result.to_csv(index=False)
    print result

Please feel free to reply if any problem.

【讨论】:

  • 请仔细阅读问题。 timeseries 必须是标题,而不是额外的列。
  • 为此,您只需将一行 time1=time1.reset_index() 更改为 time1=time1.reset_index(drop=True) 现在不会出现额外的列
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-19
  • 2021-07-14
  • 2015-04-02
相关资源
最近更新 更多