【问题标题】:Get value from dataframe based on column Name and row根据列名称和行从数据框中获取值
【发布时间】:2021-02-22 13:31:03
【问题描述】:

我有以下数据框:

d = {
    'weekbegin': ['4/11/2019', '11/11/2019'],
    '1': [3, 4],
    '2': [31, 4],
    '12': [3, 4]
}
df = pd.DataFrame(data=d)

以及以下输入:

value = 4
week = '4/11/2019'

我的问题:

我正在寻找一个具有 column_named == value 和 row == '4/11/2019' 的单元格。

对于给定的示例,预期答案是 31

到目前为止我所做的尝试:

获取列名:

df.loc[(df['weekbegin'] == week) & (df[str(value)])]

但它返回行。

    weekbegin   1   2   12
0   4/11/2019   3   31  3

【问题讨论】:

  • 我不明白你是怎么得到 31 的。值不应该是 2 吗?
  • 不,2 是列名@Vishnudev -- jezrael 提供的答案可能会澄清

标签: python python-3.x pandas string dataframe


【解决方案1】:

你很亲密,DataFrame.loc 列名中需要第二个参数,所以使用:

out = df.loc[(df['weekbegin'] == week), str(value)]

如果可能value 不匹配使用:

out = df.loc[(df['weekbegin'] == week), df.columns == str(value)]

如果需要标量输出(如果总是匹配):

out_scalar = out.iat[0]

如果需要标量输出,如果可能不匹配:

out_scalar  = next(iter(out), 'no match')

【讨论】:

  • 代码错误,因为没有名为 '4' 的列。我们如何防止这种情况发生? @jezrael
  • @Vishnudev - 很好的评论,谢谢。然后使用out = df.loc[(df['weekbegin'] == week), df.columns == str(value)]
  • 酷。该添加总结了答案。 @jezrael
猜你喜欢
  • 2021-11-26
  • 2021-09-14
  • 1970-01-01
  • 1970-01-01
  • 2020-05-30
  • 1970-01-01
  • 2018-01-03
  • 2019-08-19
  • 2023-02-07
相关资源
最近更新 更多