如何解决您如何获取一个涵盖多年的数据框,并将其分解为单独的DF每年
我已经看过SE,找不到我的问题的答案。我还是这个新手。
我正在尝试获取一个购买的csv文件,并将其分成每年的单独数据帧。
例如,如果我有一个以MM / DD / YYYY格式列出完整日期的清单,我试图将它们分成每年的数据框。像Ord2015,Ord2014等...
我试图将整个日期隐瞒到仅一年中,并且还尝试使用切片仅查看日期的后四个,但无济于事。
这是我目前(不完整)的尝试:
import pandas as pd
import csv
import numpy as np
import datetime as dt
import re
purch1 = pd.read_csv('purchases.csv')
#Remove unneeded fluff
del_colmn = ['pid','notes','warehouse_id','env_notes','budget_notes']
purch1 = purch1.drop(del_colmn,1)
#break down by year only
purch1.sort_values(by=['order_date'])
Ord2015 = ()
Ord2014 = ()
for purch in purch1:
Order2015.add(purch1['order_date'] == 2015)
@ anon01的每个要求...这是您让我运行的代码的结果。我只使用了四个样本,因为这是我最初使用的全部。。。唱片有将近2万行,所以我只剩下一些可以玩。
'{“ pid”:{“ 0”:75,“ 2”:95,“ 3”:117,“ 1”:82},“ env_id”:{“ 0”:12454,“ 2”: 12532,“ 3”:12623,“ 1”:12511},“ ord_date”:{“ 0”:“ 10/2/2/2014”,“ 2”:“ 11 \ / 22 \ / 2014”,“ 3 “:”“ 2 \ / 17 \ / 2015”,“ 1”:“ 11 \ / 8 \ / 2014”},“ cost_center”:{“ 0”:“ Ops”,“ 2”:“缺点”,“ 3 “:” Net“,” 1“:” Net“},” dept“:{” 0“:” Ops“,” 2“:” Cons“,” 3“:” Ops“,” 1“:” Ops “},” signing_mgr“:{” 0“:” M。Dodd“,” 2“:” L。Price“,” 3“:” M。Dodd“,” 1“:” M。Dodd“},” check_num“:{” 0“:null,” 2“:null,” 3“:null,” 1“:82301.0},” rec_date“:{” 0“:” 10 \ / 11 \ / 2014“,” 2 “:”“ 12 \ / 2 \ / 2014”,“ 3”:“ 3 \ / 1 \ / 2015”,“ 1”:“ 11 \ / 20 \ / 2014”},“ model”:{“ 0”: null,“ 2”:null,“ 3”:null,“ 1”:null},“ notes”:{“ 0”:“发往WH东部”,“ 2”:“ L.Price记录” ,“ 3”:“发给客户(1190)”,“ 1”:“由K. Wilson记录”},“ env_notes”:{“ 0”:“由K.Polt批准”,“ 2”: “ appr by S. Crane”,“ 3”:“ appr by K.Polt”,“ 1”:“ appr by K.Polt”},“ budget_notes”:{“ 0”:null,“ 2”:“ OOB费用”,“ 3”:“对客户开票”,“ 1”:空},“ cost_year”:{“ 0”:2014.0,“ 2”:2015.0,“ 3”:空,“ 1”:2014.0}} '
解决方法
您可以将parse_dates
添加到read_csv
以便将列转换为日期时间,然后创建数据帧dfs
的字典,以选择使用的key
s:
purch1 = pd.read_csv('purchases.csv',parse_dates=['ord_date'])
dfs = dict(tuple(purch1.groupby(df['ord_date'].dt.year)))
Ord2015 = dfs[2015]
Ord2016 = dfs[2016]
它不是recommended,但可以按年份组创建DataFrame:
for i,g in df.groupby(purch1['ord_date'].dt.year):
globals()['Ord' + str(i)] = g
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。