當使用自動分隔符檢測配置讀取csv文件(pd.read_csv(file_path, sep=None)
)時,熊貓會嘗試推斷分隔符(或分隔符)。在pandas中通過read_csv檢索分隔符傳遞
有沒有辦法檢索這個推斷的結果(最終用於sep
的值)?
編輯
我對於使用由read_csv
返回的大熊貓對象的方法專門找。我使用版本0.20.2的熊貓。
當使用自動分隔符檢測配置讀取csv文件(pd.read_csv(file_path, sep=None)
)時,熊貓會嘗試推斷分隔符(或分隔符)。在pandas中通過read_csv檢索分隔符傳遞
有沒有辦法檢索這個推斷的結果(最終用於sep
的值)?
編輯
我對於使用由read_csv
返回的大熊貓對象的方法專門找。我使用版本0.20.2的熊貓。
如果你想要做的就是檢測CSV的話(而無需在數據加載),您可以使用內置的csv.Sniffer
標準:
The Sniffer class is used to deduce the format of a CSV file.
尤其是sniff
方法:
sniff(sample, delimiters=None)
Analyze the given sample and return a Dialect subclass reflecting the parameters found. If the optional delimiters parameter is given, it is interpreted as a string containing possible valid delimiter characters.
下面是它的用法的例子:
with open('example.csv', 'r') as csvfile:
dialect = csv.Sniffer().sniff(csvfile.read(1024))
print(dialect.delimiter)
我想你可以做到這一點,而無需導入csv
:
reader = pd.read_csv(file_path, sep = None, iterator = True)
inferred_sep = reader._engine.data.dialect.delimiter
編輯:
忘記了iterator = True
說法。
csv.Sniffer
The Sniffer class is used to deduce the format of a CSV file.
sniff(sample, delimiters=None)
Analyze the given sample and return a Dialect subclass reflecting the parameters found. If the optional delimiters parameter is given, it is interpreted as a string containing possible valid delimiter characters.
Dialect.delimiter
A one-character string used to separate fields. It defaults to ','
import csv
sniffer = csv.Sniffer()
dialect = sniffer.sniff('first, second, third, fourth')
print dialect.delimiter
這是答案的我一直在尋找的類型,但遺憾的是它不工作。 我得到:'AttributeError:'DataFrame'對象沒有屬性'_engine'。 我使用版本0.20.2的熊貓。 –
出於興趣,'reader = pd.read_csv(file_path,sep = None,engine ='python')'工作得更好嗎? – RHSmith159
恩,不,我仍然有同樣的錯誤。這是否與以前版本的熊貓一起工作? –