我想使用pandas导入这个公开的file。就像csv(我已经简单地将.dat重命名为.csv):
clinton = pd.read_csv("C:/Users/Mateusz/Downloads/ML_DS-20180523T193457Z-001/ML_DS/clinton1.csv")
但在某些情况下,国家/地区名称由两个单词组成,而不仅仅是一个单词。在这些情况下,我的数据框向右移动。这看起来像(名称温泉分为两列):如何一次修复整个数据集?
答案 0 :(得分:4)
无需将.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
答案 1 :(得分:0)
您可以使用正则表达式作为分隔符。在您的特定情况下,所有分隔符都不止一个空格,而名称中的空格只是单个空格。
import pandas as pd
clinton = pd.read_csv("clinton1.csv", sep='\s{2,}', header=None, engine='python')