我正在组合pandas数据帧和ufloat,如下所示。在一段时间内工作得很好,现在如果我想在ufloat列上使用nsmallest函数,我有一个问题。这是错误消息:
TypeError: Column 'x' has dtype object, cannot use method 'nsmallest' with this dtype
也许将ufloat放入数据帧不是最好的主意。有没有更好的方法来组合不确定性和数据帧?或者我们可以轻松地解决这个问题吗
import numpy as np
import pandas as pd
from uncertainties import unumpy as unp
x = unp.uarray([1, 2, 3], [0.11, 0.21, 0.3])
y = unp.uarray([5, 4, 3], [0.21, 0.08, 0.23])
bar = np.array([7.2, 5.1, 3.7])
df = pd.DataFrame({ 'x':x, 'y':y, 'bar':bar })
df["z"] = df["x"]**2 + 2*df["y"]
df["zz"] = 1/df["x"] + unp.sin(df["y"])
print df.nsmallest(1, "x")
编辑:所需的输出是完整的数据帧(类似于print df.nsmallest(1,“bar”)),只针对具有最小unumpy.nominal_值(df[“x”])的条目。在这种特殊情况下,这与nlargest(1,“bar”)相同,因此
bar x y z zz
0 7.2 1.00+/-0.11 5.00+/-0.21 11.0+/-0.5 0.04+/-0.13
下面的代码可能会对您有所帮助
temp\u minimen\u nominal用于筛选具有最小标称值的行
temp\u minimable\u std\u devs用于筛选具有最小std\u dev值的行
最小值的临时列表用于筛选具有“n”最小值的行
对于最大值也是如此
如果您想根据不同的基础过滤数据,也可以更改lambda函数
相关问题 更多 >
编程相关推荐