使用混合数据清理或引用pandas数据帧

时间:2014-04-04 07:29:22

标签: numpy pandas datanitro

我有一个pandas数据框,其中包含表格格式的混合数据:

import datetime
d1 = datetime.datetime(2014, 1, 1)
d2 = datetime.datetime(2014, 1, 1)
d3 = datetime.datetime(2014, 1, 1)
a = [[True, False, True], [100.0, 200.0, 200.0], [2, 5, 5], [d1, d2, d3]]
df = pd.DataFrame(a, columns = ['Series0', 'Series1', 'Series3'], index=['row1','row2', 'row3', 'row4'])
df 

        Series0 Series1 Series3
row1     True    False   True
row2     100     200     200
row3     2   5   5
row4     2014-01-01 00:00:00     2014-01-01 00:00:00     2014-01-01 00:00:00

现在,如果我从数据帧中切出一行数据并尝试将其与float64类型相乘:

row2 = df.T['row2']
x = np.tan(1)
row2 * x

我得到:

TypeError: unsupported operand type(s) for *: 'numpy.ndarray' and 'numpy.float64'

我已经检查过,当使用numpy和pandas的最新版本时,错误消失了。作为参考,错误发生在Pandas 0.10.0,Numpy:1.6.2。

我无法获得升级到最新版本的明显答案,因为代码必须比版本更强大。是否有另一种语法来提取数据行,以便我可以对其进行计算?如果我最终将软件包升级到最新版本,绝对需要一些不会破坏的东西。在数据进入数据帧之前操作数据也不是一种选择,因为pandas数据帧是由DataNitro df方法生成的。

1 个答案:

答案 0 :(得分:2)

如果你可以在创建数据帧之后和操作之前进行操作,那么你可以试试这个:

row2 = df.T['row2']
row2 = row2.astype(float)
x = np.tan(1)
row2 * x