我正在使用pandas数据帧读取csv文件。 test-data.log的内容
name 1 2 3
value 4 5 6
type int float char
我使用此脚本读取文件
import pandas as pd
url = "/usr/local/test-data.log"
dataframe = pd.read_csv(url, sep='\t', header=None)
df.dtypes
我得到的输出是所有条目都是object类型的,它必须是int,int,object
答案 0 :(得分:0)
您的文件的制表符分隔不正确。看起来您有空格而不是制表符。在您的情况下,每一行都是一个字符串,即第一行中的数据是
name 1 2 3
您只有1列,而不是4列。这就是为什么您将其视为对象。
这是文件的外观:
name 1 2 3
value 4 5 6
在数据框上运行df.types
后,您将看到4列和2行。
0 object
1 int64
2 int64
3 int64
dtype: object
答案 1 :(得分:0)
有2个问题:
object
类型读取。这是有道理的,因为选择的系列类型必须容纳该系列中的所有值。 object
代表一系列指针,可以处理任意类型。可以使用delim_whitespace=True
解决问题(1)。
可以通过skipfooter=1
排除最后一行来解决问题(2)。
这是一个演示:
from io import StringIO
import pandas as pd
mystr = StringIO("""StringIOname 1 2 3
value 4 5 6
type int float char""")
df = pd.read_csv(mystr, delim_whitespace=True, header=None, skipfooter=1)
print(df.dtypes)
0 object
1 int64
2 int64
3 int64
dtype: object