python - 如何根据不同的输入自动迭代以获取(pandas)数据帧的元素

标签 python pandas dataframe

我有一个包含大数据集的项目,我正在尝试提取一些值,这些值取决于用户给出的输入,这意味着它彼此不同。我的数据框有 16 列,包括物种、重量、人口、颜色、位置等,看起来像(我为这个问题做了一个小例子)

df = pd.DataFrame({'species': ['bear', 'bear', 'marsupial', 'polar bear', 'bear', 'polar bear'],
                  'weights': [350, 350, 140, 450, 350, 540],
                  'population': [1864, 22000, 80000, 3000, 7864, 5000],
                  'color': ['brown', 'black', 'gray', 'white', 'brown', 'brown'],
                  'locations': ['US', 'Canada', 'Canada', 'Russia', 'US', 'Canada']})
output: 
   color locations  population species  weights
0  brown        US        1864    bear      350
1  black    Canada       22000    bear      350
4  brown        US        7864    bear      350

我询问用户您想查看哪些功能,然后从数据框中返回名称。我将用户输入收集为字典:

dict = {
  species: bear,
  weights: 350
}

我可以使用 loc 手动获取名称

df_loc = df.loc[(df['weights'] == 350) & (df['species'] == 'bear')]

output:
color locations  population species  weights
0  brown        US        1864    bear      350
1  black    Canada       22000    bear      350
4  brown        US        7864    bear      350

到目前为止,还好,但我无法找到一种方法将 df.loc[] 放入字典循环中,并且可以自动执行搜索过程,因为其中的大小和键值字典随时都会改变。

有什么想法吗?

最佳答案

您可以定义一个函数,它接受用户提供的特征字典并返回所需的数据帧。

代码:

def get_df(features):
    mask = True
    for k, v in features.items():
        mask = mask & (df[k] == v)
    return df.loc[mask]

输入功能:

features = {
  "species": "bear",
  "weights": 350
}

输出:

>>> print(get_df(features))

  species  weights  population  color locations
0    bear      350        1864  brown        US
1    bear      350       22000  black    Canada
4    bear      350        7864  brown        US

关于python - 如何根据不同的输入自动迭代以获取(pandas)数据帧的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60965871/

相关文章:

python - 加入多索引的pandas系列

python - 在 Pandas 数据框中随机插入 NA 的值 - 没有行完全丢失

python - pandas GroupBy 具有 NaN(缺失)值的列

python - Pandas 数据框创建新列并填充来自相同 df 的计算值

scala - Spark-查找2周之间的全年周的范围

python - 如何创建多个空数据框?

PYTHON:有没有办法在 Redshift 的 SUPER 列中插入 JSON 而不转义字符?

python - 在指定时间后更新小部件

python - 混合数据类和枚举时的反直觉结果

python - Pycharm更长的输出