[英]read data having a column with more than 1 entry
我想閱讀以下數據
name nr rep meters
Bill 0 1 135
Chill 0 2 81, 81
Billy 5 6 175, 205, 187, 174, 240, 198
Sambouka 5 7 130, 113, 117, 118, 130
Chile 0 1 120
我嘗試了以下方法:
data = pd.read_csv('data.dat', sep='\s+')
但顯然它不起作用,因為最后一列meters
有超過1個條目。 有什么建議么?
請注意,我正在處理的數據大約有100行,因此這不是完整的數據。
使用@Abbas答案,它有效:
data = pd.read_csv('data.dat', sep='\s{2,}', engine='python')
print data['meters'][2] # output: 175, 205, 187, 174, 240, 198
但
print len(data['meters'][2]) # output 28 !
而輸出應為6
。
畢竟,我想
plt.hist(data['meters'][2])
您還可以使用任何數量的前面沒有逗號的空格作為分隔符,使用正則表達式負向lookbehind:
data = pd.read_csv('data.dat', sep='(?<!,)\s+')
如果您還想忽略空格后跟逗號,請添加否定前瞻:
data = pd.read_csv('data.dat', sep='(?<!,)\s+(?!,)')
拆分后,組合值當然是字符串而不是列表。 您的示例包含28個字符,因此輸出是您所期望的。
您可以使用列表解析將此字符串轉換為Python的整數列表:
my_list_of_ints = [int(n) for n in my_string.split(",")]
或使用內置map
功能:
my_list_of_ints = map(int, my_string.split(","))
這將完成它
data = pd.read_csv('data.dat', delim_whitespace=True)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.