pandas.read_csv正确设置读取一个非常原始的CSV文件,前三个数字编译成datetime.datetime对象是什么?

时间:2017-03-29 00:40:52

标签: python csv pandas dataframe

更明确一点,我有这种类型的数据

2011,1,14, Orange  ,Buy,1500,
2011,1,19, Apple   ,Sell,1500,
2011,1,19, Banana  ,Buy,4000,

我正在尝试将其直接读入DataFrame,其中包含列= [' date',' fruit',' trade',' quantity&# 39;]这样的形状。

print df_grocer.date
2011-01-14 16:00:00     
2011-01-19 16:00:00     
2011-01-19 16:00:00    

print df_grocer.fruit
Orange 
Apple  
Banana 

提前致谢

1 个答案:

答案 0 :(得分:2)

pd.read_csv

  

parse_dates:boolean或整数或名称列表或列表或dict列表,默认为False

     
      
  • 布尔值。如果为True - >尝试解析索引。
  •   
  • 整体或名称列表。例如如果[1,2,3] - >尝试将第1,2,3列分别解析为单独的日期列。
  •   
  • 列表清单。例如如果 [[1,3]] - >将第1列和第3列组合在一起并解析为   单日期栏。
  •   
  • dict,例如 {'foo':[1,3]} - >将第1,3列解析为日期并调用结果'foo'
  •   
     

注意:iso8601格式的日期存在快速路径。

from io import StringIO
import pandas as pd

txt = """2011,1,14, Orange  ,Buy,1500,
2011,1,19, Apple   ,Sell,1500,
2011,1,19, Banana  ,Buy,4000,"""

df = pd.read_csv(
    StringIO(txt),
    skipinitialspace=True,
    header=None,
    parse_dates=dict(date=[0, 1, 2]),
    usecols=[0, 1, 2, 3, 4, 5],
    names=['_', '_', '_', 'fruit', 'trade', 'quantity']
)


print(df)

        date     fruit trade  quantity
0 2011-01-14  Orange     Buy      1500
1 2011-01-19  Apple     Sell      1500
2 2011-01-19  Banana     Buy      4000