熊猫无法将csv文件中的字符串正确分隔为列

时间:2020-11-03 20:51:15

标签: python pandas dataframe jupyter-notebook data-analysis

我是Python数据分析的新手,并且在项目制作过程中遇到问题。 csv文件中的某些值在双引号中带有定界符,因此Pandas无法正确将其分隔

top = pd.read_csv(r"C:\Users\User\Desktop\data analytics\Project\Analysis-Spotify-Top-2000\Spotify-2000.csv",delimiter = ",",
        encoding = "UTF-8", doublequote=True, engine="python", quotechar='"', quoting=csv.QUOTE_ALL)

我发现哪个记录记录了该问题:

screen1

我的老师建议我用这些值和相同的列创建一个新的数据框,并且应该删除在双引号中带有定界符的那些记录,然后df将合并到原始记录。

但是说实话,我不知道该怎么做(我做了一些奇怪的事情-screen2

is_title_null = pd.isnull(top["Title"])
missing_list = top[is_title_null]["Index"].tolist()
list_of_missing_list = []
for i in missing_list:
l = i.split(', ')
list_of_missing_list.append(l)
list_of_missing_list
missing_df = pd.DataFrame(np.empty((0, 15)))    
missing_df.columns = ["Index", "Title","Artist","Top Genre","Year","Beats Per Minute 
(BPM)","Energy","Danceability","Loudness (dB)","Liveness","Valence","Length 
(Duration)","Acousticness","Speechiness","Popularity"]
 missing_df.append(list_of_missing_list,ignore_index = True)

这是我在GitHub中的项目链接(在这里您可以看到问题):https://github.com/Sabina-Karenkina/Analysis-Spotify-Top-2000

1 个答案:

答案 0 :(得分:0)

好的。这不是一种真正优雅的处理方式,但是正如我之前在评论中所提到的那样,由于文件损坏开始时,首先创建数据帧将无法解决问题。我设法找到一种轻松解决问题的方法。

使用excel打开您的Spotify-2000文件,并在列中输入文字。当询问哪个定界符时,选择,(逗号)。将文件另存为新的“´csv”文件(Soptify2.csv),但请确保已保存;作为分隔符(这是因为您可能具有包括逗号的标题。

现在,使用pandas来读取此新文件:

top = pd.read_csv(r"C:/Users/k_sego/spotify2.csv",delimiter = ";",
        encoding = "iso-8859-1", doublequote=True, engine="python")
top.head(100)

enter image description here