我想使用循环比较不同组中的用户。我在下面提供了一个示例数据框,并进行了一次初始尝试(错误结束)。我想知道如何遍历数据框中的每个唯一值,然后为该用户选择有条件的行。
因此,在下面的示例尝试中,我在D列中获得了“之前”和“之后”的得分。如果我尝试获得之前/之后的比率,则遍历了set()
个用户然后在iterrows()
在用户== i的数据帧中找到一行时,将循环的每个迭代子集化。这没有用,但我希望它能使您了解我如何解决该问题。
我要说的是,我知道循环在Pandas中并不总是被视为最佳实践,但是在更大的数据框中,我想在组之间执行一系列不同的比较功能,并且能够在灵活的循环中完成优点,所以我希望有人可以通过这种方法(在每个唯一的用户身上循环)来帮助我。
[编辑]:预期的输出为(伪代码):
User: 1, ratio: 0.5
User: 2, ratio: 1.7
谢谢,让我知道是否可以使这个问题更清楚。
df = pd.DataFrame({"user": [1,2,1,2],
"B": ["before", "before", "after", "after"],
"D": [1, 5, 2, 3],
"E": [2, 4, 5, 5]})
for item, row in df.iterrows():
s = set(df.user)
for i in s:
if row.user == i:
row[row["B"] == 'before']['D'] / row[row["B"] == 'after']['D']