首页 > 解决方案 > 使用条件在 DataFrame 中查找值

问题描述

我目前正在使用 loc 函数:

    import numpy as np
    import pandas as pd
    df = pd.DataFrame({"A": [1,2,3], "B": [2,3,4]})

    a=df.loc[(df.A==1), ['B']]
    print(a)

这将返回“B 2”而不是“2”,因此我不能将该值附加到我的输出表中:

   output_table['column'][row]=a

我怎样才能得到“2”而不是标题和值?

标签: pythonpandasspyder

解决方案


这里有几个因素。

首先,

df.loc[(df.A==1), 'B']

不同于

df.loc[(df.A==1), ['B']]

前者给你一个pd.Series,后者产生一个pd.DataFrame。您可能想要第一个,它应该适用于您发布的代码。如果你真的只想要2并且知道 该系列只有一个项目,你可以明确地做

df.loc[(df.A==1), 'B'].item()

获取返回值。

其次,如果output_table是您可能想要的数据框

output_table.low[row, 'column'] = a

而不是output_table['column'][row]. 后一个语句将修改数据框的副本,而前一个语句将修改数据框。我建议查看.loc文档页面以获取更多信息。


推荐阅读