Pandas read_csv 在逗号后不分隔值

时间:2021-02-26 14:52:21

标签: python pandas csv

我正在尝试在 Jupyter 笔记本中加载一些 .csv 数据,但出于某种原因,它没有将我的数据分开,而是将所有内容都放在一列中。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

df = 
pd.read_csv(r'C:\Users\leonm\Documents\Fontys\Semester 
4\GriefBot_PracticeChallenge\DummyDataGriefbot.csv')
df.head()

My csv data enter image description here

在这张图片中有我正在使用的数据。

现在我不明白为什么我的值都出现在单列中并且没有在逗号所在的位置分开。 我也试过 spe=',' 和 sep=';'但它们不会改变任何东西。

This is what I am getting enter image description here 我非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

如果这就是您的数据在 Excel 等 CSV 阅读器中的显示方式,那么每一行在文本编辑器中可能看起来就像一个大字符串。

"ID,PERSON,DATE"
"1,A. Molina,1593147221"
"2,A. Moran, 16456"
"3,Action Marquez,15436"

您当然可以在 Excel 中执行“文本到列”并重新保存您的文件,或者如果您有很多这样的文件,您可以使用 Pandas split 函数。

df[df.columns[0].split(',')] = df.iloc[:,0].str.split(',', expand=True)
#  ^ split header by comma        ^         ^ create list split by comma, and expand
#                                 |           each list entry into a new column
#                                 | select first column of data                
df.head()
>    ID,PERSON,DATE         ID  PERSON          DATE
> 0  1,A. Molina,1593147221 1   A. Molina       1593147221
> 1  2,A. Moran, 16456      2   A. Moran        16456
> 2  3,Action Marquez,15436 3   Action Marquez  15436

然后您可以使用 pd.drop 删除第一列(如果您不需要它)

df.drop(df.columns[0], axis=1, inplace=True)