如何使用 pandas 将度分秒 (DMS) 数据直接从 .CSV 文件读取到数据帧中作为字符串?
How to read Degree Minute Seconds (DMS) data directly from a .CSV file using pandas into a dataframe as strings?
如何使用 pandas 将度分秒 (DMS) 数据直接从 .CSV 文件读取到数据帧中作为字符串?
例如:
如果我有一个包含 DMS 格式数据列的 csv 文件,如何将其作为字符串读入数据框以供进一步计算?
76° 17' 51.2399" E
77° 26' 30.8322" E
76° 51' 29.7812" E
75° 45' 41.3540" E
76° 17' 51.2399" E
输入文件示例:enter link description here
当我使用pandas.read_csv('test.csv) #test.csv是输入文件
我收到一个错误
Traceback (most recent call last):
File "<ipython-input-90-2af7440e7795>", line 1, in <module>
df = pd.read_csv('test.csv')
File "C:\ProgramData\Anaconda3\envs\obspy\lib\site-packages\pandas\io\parsers.py", line 676, in parser_f
return _read(filepath_or_buffer, kwds)
File "C:\ProgramData\Anaconda3\envs\obspy\lib\site-packages\pandas\io\parsers.py", line 448, in _read
parser = TextFileReader(fp_or_buf, **kwds)
File "C:\ProgramData\Anaconda3\envs\obspy\lib\site-packages\pandas\io\parsers.py", line 880, in __init__
self._make_engine(self.engine)
File "C:\ProgramData\Anaconda3\envs\obspy\lib\site-packages\pandas\io\parsers.py", line 1114, in _make_engine
self._engine = CParserWrapper(self.f, **self.options)
File "C:\ProgramData\Anaconda3\envs\obspy\lib\site-packages\pandas\io\parsers.py", line 1891, in __init__
self._reader = parsers.TextReader(src, **kwds)
File "pandas\_libs\parsers.pyx", line 529, in pandas._libs.parsers.TextReader.__cinit__
File "pandas\_libs\parsers.pyx", line 749, in pandas._libs.parsers.TextReader._get_header
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf8 in position 2: invalid start byte
CSV 文件:
id,string
1,76° 17' 51.2399" E
2,77° 26' 30.8322" E
3,76° 51' 29.7812" E
4,75° 45' 41.3540" E
5,76° 17' 51.2399" E
代码:
df = pd.read_csv('test.csv')
print(df)
id string
0 1 76° 17' 51.2399" E
1 2 77° 26' 30.8322" E
2 3 76° 51' 29.7812" E
3 4 75° 45' 41.3540" E
4 5 76° 17' 51.2399" E
能否分享您的 CSV 文件示例?
尝试使用不同的编码:
import pandas as pd
df = pd.read_csv('test1.csv', encoding='windows-1252')
如何使用 pandas 将度分秒 (DMS) 数据直接从 .CSV 文件读取到数据帧中作为字符串? 例如: 如果我有一个包含 DMS 格式数据列的 csv 文件,如何将其作为字符串读入数据框以供进一步计算?
76° 17' 51.2399" E
77° 26' 30.8322" E
76° 51' 29.7812" E
75° 45' 41.3540" E
76° 17' 51.2399" E
输入文件示例:enter link description here
当我使用pandas.read_csv('test.csv) #test.csv是输入文件 我收到一个错误
Traceback (most recent call last):
File "<ipython-input-90-2af7440e7795>", line 1, in <module>
df = pd.read_csv('test.csv')
File "C:\ProgramData\Anaconda3\envs\obspy\lib\site-packages\pandas\io\parsers.py", line 676, in parser_f
return _read(filepath_or_buffer, kwds)
File "C:\ProgramData\Anaconda3\envs\obspy\lib\site-packages\pandas\io\parsers.py", line 448, in _read
parser = TextFileReader(fp_or_buf, **kwds)
File "C:\ProgramData\Anaconda3\envs\obspy\lib\site-packages\pandas\io\parsers.py", line 880, in __init__
self._make_engine(self.engine)
File "C:\ProgramData\Anaconda3\envs\obspy\lib\site-packages\pandas\io\parsers.py", line 1114, in _make_engine
self._engine = CParserWrapper(self.f, **self.options)
File "C:\ProgramData\Anaconda3\envs\obspy\lib\site-packages\pandas\io\parsers.py", line 1891, in __init__
self._reader = parsers.TextReader(src, **kwds)
File "pandas\_libs\parsers.pyx", line 529, in pandas._libs.parsers.TextReader.__cinit__
File "pandas\_libs\parsers.pyx", line 749, in pandas._libs.parsers.TextReader._get_header
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf8 in position 2: invalid start byte
CSV 文件:
id,string
1,76° 17' 51.2399" E
2,77° 26' 30.8322" E
3,76° 51' 29.7812" E
4,75° 45' 41.3540" E
5,76° 17' 51.2399" E
代码:
df = pd.read_csv('test.csv')
print(df)
id string
0 1 76° 17' 51.2399" E
1 2 77° 26' 30.8322" E
2 3 76° 51' 29.7812" E
3 4 75° 45' 41.3540" E
4 5 76° 17' 51.2399" E
能否分享您的 CSV 文件示例?
尝试使用不同的编码:
import pandas as pd
df = pd.read_csv('test1.csv', encoding='windows-1252')