gpt4 book ai didi

python - Pandas pd.read_csv 不适用于简单的 sep =','

转载 作者:行者123 更新时间:2023-11-30 22:03:44 25 4
gpt4 key购买 nike

大家下午好。

我知道这是一个很简单的问题,但我根本不明白为什么它不能按我预期的方式工作。

任务如下:

我有一个以这种格式呈现的文件 data.csv:

id,"feature_1","feature_2","feature_3"
00100429,"PROTO","Proprietary","Phone"
00100429,"PROTO","Proprietary","Phone"

问题是使用 pandas 导入这些数据。我知道默认情况下 pandas read_csv 使用逗号分隔符,所以我只是将其导入如下:

data = pd.read_csv('data.csv')

我得到的结果就是我一开始给出的结果,没有任何改变。我的意思是一列包含所有内容。

我使用正则表达式尝试了许多其他分隔符,唯一做出某种改进的是:

data = pd.read_csv('data.csv',sep="\,",engine='python')

一方面它最终将所有列分开,另一方面数据的呈现方式不太方便使用。特别是:

"id         ""feature_1""   ""feature_2""   ""feature_3"""
"00100429 ""PROTO"" ""Proprietary"" ""Phone"""

因此,我认为一定是某个地方出现了错误,因为数据看起来没问题。

所以问题是 - 如何导入带有分隔列且没有三引号符号的 csv 文件?

谢谢。

最佳答案

这是我针对您的问题的快速解决方案 -

import numpy as np
import pandas as pd

### Reading the file, treating header as first row and later removing all the double apostrophe
df = pd.read_csv('file.csv', sep='\,', header=None).apply(lambda x: x.str.replace(r"\"",""))
df

0 1 2 3
0 id feature_1 feature_2 feature_3
1 00100429 PROTO Proprietary Phone
2 00100429 PROTO Proprietary Phone

### Putting column names back and dropping the first row.
df.columns = df.iloc[0]
df.drop(index=0, inplace=True)
df

## You can reset the index
id feature_1 feature_2 feature_3
1 00100429 PROTO Proprietary Phone
2 00100429 PROTO Proprietary Phone

### Converting `id` column datatype back to `int` (change according to your needs)

df.id = df.id.astype(np.int)
np.result_type(df.id)

dtype('int64')

关于python - Pandas pd.read_csv 不适用于简单的 sep =',',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53455947/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com