使用read\u csv方法读取数据时,如何删除数据中的“双引号”?

2024-10-04 09:20:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用pandas从.csv文件读取数据。 我使用sep='、\s*'是因为sep='、'不用于指定列。 我的.csv文件

tarih_x,Alt_urun,per_geomean
2018-07-13,Antep fıstığı-Açık,81.87336164596796
2018-07-14,Antep fıstığı-Açık,81.87336164596796
2018-07-15,Antep fıstığı-Açık,81.87336164596796
2018-07-16,Antep fıstığı-Açık,81.87336164596796
2018-07-17,Antep fıstığı-Açık,81.87336164596796

我在读数据:

path = "data//gün_result_index.csv"
df = pd.read_csv(path,encoding='utf-16',sep=',\s*',engine='python')

但是当我打印df时,我看到这个方法在数据中添加了双引号:

|   | "tarih_x    | Alt_urun           | per_geomean"       |
|---|-------------|--------------------|--------------------|
| 0 | "2018-07-13 | Antep fıstığı-Açık | 81.87336164596796" |
| 1 | "2018-07-14 | Antep fıstığı-Açık | 81.87336164596796" |
| 2 | "2018-07-15 | Antep fıstığı-Açık | 81.87336164596796" |
| 3 | "2018-07-16 | Antep fıstığı-Açık | 81.87336164596796" |

这不是我想要的。如何读取没有双引号的数据?你知道吗


Tags: 文件csv数据pathpandasdfaltsep
2条回答

对我来说df = pd.read_csv('file.csv')很好用:

      tarih_x            Alt_urun  per_geomean
0  2018-07-13  Antep fıstığı-Açık    81.873362
1  2018-07-14  Antep fıstığı-Açık    81.873362
2  2018-07-15  Antep fıstığı-Açık    81.873362
3  2018-07-16  Antep fıstığı-Açık    81.873362
4  2018-07-17  Antep fıstığı-Açık    81.873362

但是encoding='utf-16'给出:
UnicodeError: UTF-16 stream does not start with BOM

我在Ubuntu上使用pandas 0.25.1。你知道吗

可能还有一条更短的路。 我找到的解决方法是:

df.columns = df.columns.str.replace('\"', '')
for i in df.columns:
    df[i]= df[i].apply(lambda x: x.replace("\"",""))

相关问题 更多 >