【问题标题】:Pandas dataframe.read_csv ,quotechar doesnot workPandas dataframe.read_csv ,quotechar 不起作用
【发布时间】:2019-10-25 11:49:26
【问题描述】:

我没有得到预期的输出。

我正在尝试将 CSV 转换为数据框,但它不起作用:

sales=pd.read_csv('Downloads/item.csv',sep=',',delimeter='"',error_bad_lines=False,quotechar='"')

这是我的 CSV 文件示例:

"账号、名称、商品代码、类别、数量、单价、净价、日期"

"093356,Waters-Walker,AS-93055,衬衫,5,82.68,413.40,2013-11-17 20:41:11"

"659366,Waelchi-Fahey,AS-93055,衬衫,18,99.64,1793.52,2014-01-03 08:14:27"

"563905,""Kerluke, Reilly and Bechtelar"",AS-93055,Shirt,17,52.82,897.94,2013-12-04 02:07:05"

"995267,Cole-Eichmann,GS-86623,Shoes,18,15.28,275.04,2014-04-09 16:15:03"

"524021,Hegmann and Sons,LL-46261,Shoes,7,78.78,551.46,2014-06-18 19:25:10"

"929400,""Senger, Upton and Breitenberg"",LW-86841,Shoes,17,38.19,649.23,2014-02-10 05:55:56"

请查看用“”括起来的 CSV 文件中的粗体字符

【问题讨论】:

  • 到目前为止你尝试了什么?期望的输出是什么?请分享MCVE

标签: python-3.x pandas dataframe


【解决方案1】:

这是我的建议:

df = pd.read_csv('file.csv')
col_name = 'account_number,name,item_code,category,quantity,unit price,net_price,date'
z = pd.concat([df[col_name].str.split(r'(,(?=\S)|:)', expand=True)], axis=1)
z['date'] = z[14]+z[15]+z[16]+z[17]+z[18]
z = z.drop(columns=[1,3,5,7,9,11,13, 14,15,16,17,18])
z.columns = col_name.split(',')

关键是这个正则表达式r'(,(?=\S)|:)' - 逗号但后面没有空格,但我不知道为什么它也会在: 上拆分。如果您可以修复它,那么您没有手动连接日期。

输出:

 account_number  ...                 date
0         093356  ...  2013-11-17 20:41:11
1         659366  ...  2014-01-03 08:14:27
2         563905  ...  2013-12-04 02:07:05
3         995267  ...  2014-04-09 16:15:03
4         524021  ...  2014-06-18 19:25:10
5         929400  ...  2014-02-10 05:55:56

【讨论】:

    猜你喜欢
    • 2016-09-01
    • 2019-11-04
    • 2019-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-14
    • 2022-01-19
    相关资源
    最近更新 更多