1

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

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 方法生成的。

4

1 回答 1

2

如果您可以在创建数据框之后和进行操作之前进行操作,那么您可以尝试以下操作:

row2 = df.T['row2']
row2 = row2.astype(float)
x = np.tan(1)
row2 * x
于 2014-04-04T08:22:47.147 回答