Python df.loc不适用于变量

时间:2017-06-30 15:20:18

标签: python pandas dataframe loc

我对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

提前感谢所有帮助。

1 个答案:

答案 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}} 明显更快