【发布时间】:2021-11-27 15:46:39
【问题描述】:
我有形状 XxY 的数据框 A 和形状 ZxY 的数据框 B,要填充从 A 计算的统计数据。
举个例子:
A = pd.DataFrame(np.array(range(9)).reshape((3,3)))
B = pd.DataFrame(np.array(range(6)).reshape((2,3)))
现在我需要用 A 列的分位数(0.5)填充 B 的第 1 行,其中 B 的第 0 行 > 1(否则:np.nan)。我需要使用这样的功能:
def mydef(df0, df1):
df1.loc[1] = np.where(df1.loc[0]>1,
df0.quantile(0.5),
np.nan)
pass
mydef(A,B)
现在 B 是:
0 1 2
0 0.0 1.0 2.0
1 NaN NaN 3.5
它非常适合这些模拟数据框和我所有的真实数据框除了一个。 对于该错误,会引发此错误:
ValueError: 无法使用长度与值不同的类似列表的索引器进行设置
当我在不调用函数的情况下运行相同的代码时,它不会引发任何错误。 由于我需要使用函数,有什么建议吗?
【问题讨论】:
标签: pandas function where-clause valueerror