gpt4 book ai didi

python - 如何从数据框中提取特定值的索引和列?

转载 作者:行者123 更新时间:2023-12-04 17:10:08 26 4
gpt4 key购买 nike

---大家好!这里是 Python 的 Pandas 的新学生。

我在这里人工构建了一个数据框:/image/cWgiB.png .以下是文本重构。

df_dict = {
'header0' : [55,12,13,14,15],
'header1' : [21,22,23,24,25],
'header2' : [31,32,55,34,35],
'header3' : [41,42,43,44,45],
'header4' : [51,52,53,54,33]
}
index_list = {
0:'index0',
1:'index1',
2:'index2',
3:'index3',
4:'index4'
}
df = pd.DataFrame(df_dict).rename(index = index_list)

目标:

我想提取任何任意值(int、float、str 等)的索引行和列标题。例如,如果我想要 55 的值,此代码将返回:header0index0header2 , index2 以某种格式。它们可以是列表或元组或打印等。

澄清:

  • 假设数据框足够大,我无法“手动找到它”
  • 我不知道这个值与其他值相比有多大(所以“简单的 .idxmax()”可能不会削减它)
  • 我不知道这个值在哪里是列或索引(所以“只是 .loc.iloc 值在哪里”也无济于事)
  • 我不知道这个值是否有重复项,但如果有,则返回它的所有列/索引。

到目前为止我尝试了什么:

我试过 .columns.index.loc,但似乎无法得到答案。我得到的最远的是用 df.values == 55df == 55 创建一个 bool 数据框,但似乎无法用它做任何事情。

另一种“最远”的方法是使用 df.unstack.idxmax(),它会返回列和标题的元组,但有两个主要问题:

  1. 仅根据 .idxmax().idxmin() 函数返回最大值/最小值
  2. 只返回与我的值匹配的第一个列/索引,如果有重复则没有帮助

我知道我可以执行一个 for 循环 来遍历整个数据帧,跟踪我在临时变量中所在的列和索引。一旦找到要查找的值,我将break 并返回当前列和索引。只是希望那里有一种不那么暴力的方法,因为我想要一种适用于任何大小的任何数据帧的“高速计算”方法。

谢谢。

编辑:添加文本数据库,澄清问题。

最佳答案

使用np.where:

r, c = np.where(df == 55)    
list(zip(df.index[r], df.columns[c]))

输出:

[('index0', 'header0'), ('index2', 'header2')]

关于python - 如何从数据框中提取特定值的索引和列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69640474/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com