我对Python很新,特别是pandas。我有一个名为KeyRow的数据框,它来自更大的df:
KeyRow=df.loc[df['Order'] == UniqueOrderName[i]]
然后我做了一个嵌套循环
for i in range (0,len(PersonNum)):
print(KeyRow.loc[KeyRow['Aisle'] == '6', 'FixedPill'])
所以它似乎仅在放置常量时起作用,而如果我使用PersonNum [0]而不是'6',即使两个值都相等,它似乎也不起作用。当我使用PersonNum [i]时,这是我得到的输出:
Series([], Name: FixedPill, dtype: object)
然而,如果我使用'x',我会得到一个理想的结果:
15 5
Name: FixedPill, dtype: object
提前感谢所有帮助。
答案 0 :(得分:2)
有点不清楚你想用这个问题完成什么。如果您要过滤DataFrame,那么我建议不要以迭代方式执行此操作。您应该充分利用df = pd.DataFrame([[1,2,3], [4,5,6],
[1,2,3], [2,5,6],
[1,2,3], [4,5,6],
[1,2,3], [4,5,6]],
columns=["A", "B", "C"])
df.head()
A B C
0 1 2 3
1 4 5 6
2 1 2 3
3 2 5 6
4 1 2 3
的切片功能。考虑一下这个例子:
PersonNum = [1, 2]
假设您有一个PersonNum列表,您希望用它来查找列表为df.loc[df["A"].isin(PersonNum), "B"]
的特定字段。您可以通过执行以下步骤一步切片DataFrame:
df.loc[df["A"].isin(PersonNum), "B"].to_frame()
哪将返回熊猫系列和
.loc
返回一个新的DataFrame。与迭代方法相比,使用{{1}} 明显更快 。