Pandas(使用 def 和 np.where):以另一个数据帧行为条件的数据帧行中的值错误
Pandas (with def and np.where): error with values in a dataframe row conditioned on another dataframe row
我有形状为 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:无法使用长度不同于值
的类似列表的索引器进行设置
当我 运行 没有调用函数的相同代码时,它不会引发任何错误。
由于我需要使用一个函数,有什么建议吗?
我发现了错误。我错误地在索引中使用了相同的标签两次。基本上我的数据框 B 是这样的:
B = pd.DataFrame(np.array(range(9)).reshape((3,3)), index=[0,0,1])
以便调用 def:
def mydef(df0, df1):
df1.loc[1] = np.where(df1.loc[0]>1,
df0.quantile(0.5),
np.nan)
pass
我猜 会导致 np.where 的条件和 if-false 行与其形状不匹配。
仍然不确定为什么在 def 之外工作有效。
我有形状为 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:无法使用长度不同于值
的类似列表的索引器进行设置当我 运行 没有调用函数的相同代码时,它不会引发任何错误。 由于我需要使用一个函数,有什么建议吗?
我发现了错误。我错误地在索引中使用了相同的标签两次。基本上我的数据框 B 是这样的:
B = pd.DataFrame(np.array(range(9)).reshape((3,3)), index=[0,0,1])
以便调用 def:
def mydef(df0, df1):
df1.loc[1] = np.where(df1.loc[0]>1,
df0.quantile(0.5),
np.nan)
pass
我猜 会导致 np.where 的条件和 if-false 行与其形状不匹配。
仍然不确定为什么在 def 之外工作有效。