2 回答
TA贡献1878条经验 获得超4个赞
您的代码df2是从标题为Val2并且Val3仅的列中选择,但只要您的代码df1仍然包含,Val1那么您仍然会Val1在输出中看到。
如果您使用列标题来索引数据并将新列添加到同一数据框中,可能更容易看到发生了什么。
group1 = df[["Val1", "Val2", "Val3"]] # find the min among these 3 cols
group2 = df[["Val2", "Val3"]] # find the min among only these 2 cols
df["min1"] = group1.min(axis=1)
df["col1"] = group1.idxmin(axis=1)
df["min2"] = group2.min(axis=1)
df["col2"] = group2.idxmin(axis=1)
filtered1 = df.loc[12 > df.min1] # Val3, Val1, Val3 contain the minimum values
filtered2 = df.loc[12 > df.min2] # Val3, Val3 contain the minimum values
TA贡献1772条经验 获得超8个赞
你的布尔条件对每一行都返回 true,这就是为什么你有相同的结果
34 > df.iloc[:, 3:].min(1)
Out[202]:
0 True
1 True
2 True
3 True
dtype: bool
34 > df.iloc[:, 1:].min(1)
Out[203]:
0 True
1 True
2 True
3 True
dtype: bool
iloc 按位置对数据帧进行切片
df.iloc[:, 1:]
Out[204]:
IS Val1 Val2 Val3
0 100 11 9 1
1 101 3 15 16
2 99 10 18 3
3 97 29 25 26
添加回答
举报