Skip to main content
 首页 » 编程设计

python之.dat 文件导入 Pandas

2025年05月04日23zfyouxi

我想导入这个公开可用的 file使用 Pandas 。简单为 csv(我已将 .dat 重命名为 .csv):

clinton = pd.read_csv("C:/Users/Mateusz/Downloads/ML_DS-20180523T193457Z-001/ML_DS/clinton1.csv") 

但在某些情况下,国家名称由两个单词组成,而不是一个单词。在这些情况下,将我的数据框向右移动。这看起来像(名称温泉分为两列):如何一次性修复整个数据集?

请您参考如下方法:

无需将 .dat 重命名为 .csv。相反,您可以使用匹配两个或多个空格的正则表达式作为列分隔符。

尝试使用 sep 参数:

pd.read_csv('http://users.stat.ufl.edu/~winner/data/clinton1.dat', 
            header=None, sep='\s\s+', engine='python') 

输出:

            0      1     2      3      4     5      6      7     8     9    10 
0  Autauga, AL  30.92  31.7  57623  15768  15.2  10.74  51.41  60.4  2.36  457 
1  Baldwin, AL  26.24  35.5  84935  16954  13.6   9.73  51.34  66.5  5.40  282 
2  Barbour, AL  46.36  32.8  83656  15532  25.0   8.82  53.03  28.8  7.02   47 
3   Blount, AL  32.92  34.5  61249  14820  15.0   9.67  51.15  62.4  2.36  185 
4  Bullock, AL  67.67  31.7  75725  11120  33.0   7.08  50.76  17.6  2.91  141 

如果您希望您的状态作为一个单独的列,您可以使用这个 sep='\s\s+|,' 这意味着在两个或更多空格或一个逗号上单独列。

pd.read_csv('http://users.stat.ufl.edu/~winner/data/clinton1.dat', 
            header=None, sep='\s\s+|,', engine='python') 

输出:

        0    1      2     3      4        5     6      7      8     9     10     11 
0  Autauga   AL  30.92  31.7  57623  15768.0  15.2  10.74  51.41  60.4  2.36  457.0 
1  Baldwin   AL  26.24  35.5  84935  16954.0  13.6   9.73  51.34  66.5  5.40  282.0 
2  Barbour   AL  46.36  32.8  83656  15532.0  25.0   8.82  53.03  28.8  7.02   47.0 
3   Blount   AL  32.92  34.5  61249  14820.0  15.0   9.67  51.15  62.4  2.36  185.0 
4  Bullock   AL  67.67  31.7  75725  11120.0  33.0   7.08  50.76  17.6  2.91  141.0