Python Pandas-使用pd.read_表参数&x27时出现类型错误;转换器';

Python Pandas-使用pd.read_表参数&x27时出现类型错误;转换器';,python,pandas,parameters,temperature,converters,Python,Pandas,Parameters,Temperature,Converters,我正在阅读多个文件,希望使用转换器转换温度列。我用来将开尔文转换为法伦海特的函数可以独立工作,但在使用converters参数时不起作用。我得到一个TypeError:-:“str”和“float”的操作数类型不受支持。 目前,我的数据框看起来像这样 temp date 2006-01-01 294.6 2006-02-01 294.1... df['temp'].dtype是dtype('float64') 我的职能: def k2f(df):

我正在阅读多个文件,希望使用转换器转换温度列。我用来将开尔文转换为法伦海特的函数可以独立工作,但在使用converters参数时不起作用。我得到一个
TypeError:-:“str”和“float”的操作数类型不受支持。

目前,我的数据框看起来像这样

             temp
date
2006-01-01  294.6
2006-02-01  294.1...
df['temp'].dtype是
dtype('float64')

我的职能:

def k2f(df):         
     return (df-273.15)*1.8+32.00
#also tried lambda x : (x-273.15)*1.8+32.00
单独使用函数:

>>>k2f(df)
             temp
date
2006-01-01  70.61
2006-02-01  69.71...
如何读取数据文件df=…:

df = pd.read_table('pathto.txt',skiprows=9,delimiter='\s+',
usecols=(0,4),index_col=(0),
names=('date','temp'),na_values=('na'),parse_dates=True,
converters={4:k2f}) #also tried 'temp' keyword to same result
使用df=。。。以上:

Traceback (most recent call last):
  File "mycode.py", line 24, in <module>
    df = pd.read_table('pathto.txt',skiprows=9,delimiter='\s+',usecols=(0,4),index_col=(0),names=('date','temp'),na_values=('na'),parse_dates=True,converters={4:k2f})
  File "/usr/local/anaconda2/lib/python2.7/site-packages/pandas/io/parsers.py", line 655, in parser_f
    return _read(filepath_or_buffer, kwds)
  File "/usr/local/anaconda2/lib/python2.7/site-packages/pandas/io/parsers.py", line 411, in _read
    data = parser.read(nrows)
  File "/usr/local/anaconda2/lib/python2.7/site-packages/pandas/io/parsers.py", line 982, in read
    ret = self._engine.read(nrows)
  File "/usr/local/anaconda2/lib/python2.7/site-packages/pandas/io/parsers.py", line 1719, in read
    data = self._reader.read(nrows)
  File "pandas/_libs/parsers.pyx", line 890, in pandas._libs.parsers.TextReader.read (pandas/_libs/parsers.c:10862)
  File "pandas/_libs/parsers.pyx", line 912, in pandas._libs.parsers.TextReader._read_low_memory (pandas/_libs/parsers.c:11138)
  File "pandas/_libs/parsers.pyx", line 989, in pandas._libs.parsers.TextReader._read_rows (pandas/_libs/parsers.c:12175)
  File "pandas/_libs/parsers.pyx", line 1112, in pandas._libs.parsers.TextReader._convert_column_data (pandas/_libs/parsers.c:14103)
  File "pandas/_libs/parsers.pyx", line 2274, in pandas._libs.parsers._apply_converter (pandas/_libs/parsers.c:30500)
  File "mmm_a.py", line 20, in k2f
    return (df-273.15)*1.8+32.00
TypeError: unsupported operand type(s) for -: 'str' and 'float'

但是,函数没有应用于值。例如,df打印,但值不会更改。

如果我正确理解了文档,可能转换器应该使用字符串而不是浮点:

数据类型:列的类型名称或目录->类型,默认为无

数据或列的数据类型。例如{'a':np.float64,'b':np.int32} 使用str或object保留而不是解释数据类型。中频转换器 如果指定了,则将应用它们而不是数据类型转换


因此,可能发生的情况是,该列没有转换为float,而是将转换器直接应用于正在读取的字符串。

您是否尝试在读取数据后运行该函数?如果是,是否会出现相同的问题?如果没有,您是否尝试过一个更简单的转换函数(如对每个值进行平方运算)?我只是尝试了一个平方函数。是,该功能在读取数据后工作。数据实际上没有被读入,“df未定义”,同样的问题也发生了。啊,这似乎消除了错误并创建了数据帧。但是,没有应用该函数。这可能是我做的功能有问题。。。
df = pd.read_table('pathto.txt',skiprows=9,delimiter='\s+',
usecols=(0,4),index_col=(0),
names=('date','temp'),na_values=('na'),parse_dates=True,
***converters={'4':k2f}) #though 'temp' still doesn't work, same error