我有 2 个数据集,一个列表 r 和一个数据框 df。
r = [1,1,1,1,1,1,1,1,2,2]
df
|----|----|----|----|----|----|----|----|----|----|
| d1 | d2 | d3 | d4 | d5 | d6 | d7 | d8 | d9 | d10|
|----|----|----|----|----|----|----|----|----|----|
| 0 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 1 |
| 1 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 1 |
| 1 | 1 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 0 |
| 0 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 |
我正在尝试运行一个 if 语句来评估从 df 与 r 中选择的随机值。 但是我得到一个错误。
this link 中的帖子有点暴露问题,我确实尝试了这些方法,但似乎没有用。
我尝试使用上面链接和错误中建议的方法 (.any() , .all(), .bool()) 但看不到让它工作。
df1 = df.sample(n=1)
if(df1 <= r):
df
r-=df
例如,如果检索 df 的第一行,我希望将 r 分配如下 (r):
r = [1,1,0,1,1,0,0,1,1,1]
请您参考如下方法:
if 将引发错误,因为您要求比较两组数据,每组数据都具有多个值,这是不明确的。这就是为什么 numpy 要求您应用 any() 或 all() 以将其传递给 if。
至于你的问题。您应该将 r 定义为一个数组:
r = np.asarray(r)
然后,如果您只想修改 r(逐个值并根据您的比较),请使用掩码进行修改:
df1 = df.sample(1).values.ravel() #to transform the row into a flat array
r -= (df1 * (df1<=r))
