从 Pandas/Python 中的选定单元格访问索引/行/列

Posted

技术标签:

【中文标题】从 Pandas/Python 中的选定单元格访问索引/行/列【英文标题】:Accessing the index/row/column from a selected cell in Pandas/Python 【发布时间】:2018-03-11 19:20:12 【问题描述】:

我应该将具有重要功能的 Excel 电子表格转换为 Web 应用程序。我决定与 Pandas 合作,我想知道解决这个问题的最佳方法是什么。

我需要做的一件事是允许人们输入某个数字(我们称之为lot_number)并访问同一行中的其他值。

例如,如果lot_number = 3address_value 在不同的列中,则为 555 Something Street。所有lot_numbersaddress_value 条目都不同。

我的问题是:如何根据 lot_number 使用 pandas 访问 address_value

【问题讨论】:

【参考方案1】:

更新

使用 iloc。示例如下:

df.iloc[row, column] # accepts ints

这将使您可以访问该列和行。

更新

所以我们找到行索引,然后按照我原来的建议,得到整行。

row = df.loc[df['address_value']==lot_number].index[0]
df.iloc[row]

【讨论】:

我认为这不能恰当地解决这个问题。该行将需要来自任何行 lot_number 。 很抱歉 - 看看您如何继续使用新的更新 这似乎可行,但它似乎返回了太多数据。等一下,让我看看 我认为这很接近。我现在收到此错误。 IndexError:索引 0 超出轴 0 的范围,大小为 0 这里也一样。试试 [row, :]【参考方案2】:

通过使用lookup

df.lookup(df[df['lot_number']==3].index,['address_value'])

Out[211]: array(['foo'], dtype=object)

数据输入

df
Out[212]: 
  address_value  lot_number
0           foo           3
1           bar           2
2          blah           1

df = pd.DataFrame('lot_number':[3,2,1], 'address_value':['foo','bar','blah'])

编辑

df = pd.DataFrame('lot_number':[3,3,1], 'address_value':['foo','bar','blah'])

df.lookup(df[df['lot_number']==3].index,['address_value']*len(df[df['lot_number']==3].index))

Out[223]: array(['foo', 'bar'], dtype=object)

【讨论】:

你好文。当我运行您的示例时,这看起来很完美并且有效,但是使用我正在导入的 csv,我收到了这个错误。 ValueError:行标签的大小必须与列标签的大小相同。知道为什么吗? @vipertherapper 您已在 ['lot_number'] 列中重复 @vipertherapper 更新了,顺便说一句,你的声望达到 15,你可以投票,也可以接受你喜欢的答案:) 文有足够的代表。帮帮我哈哈 是的,我会尽快接受您的回答。我仍然收到错误消息。文件“pandas/_libs/index.pyx”.... KeyError: 'lot_number'

以上是关于从 Pandas/Python 中的选定单元格访问索引/行/列的主要内容,如果未能解决你的问题,请参考以下文章

如何防止可访问性画外音读出集合视图中选定的单元格位置?

如何从表格视图中的选定单元格中获取文本?

使用 Javascript/jquery 如何从选定行中的每个单元格获取值

从 DataGridView 选定的单元格中获取文本

iPad:在屏幕上保留选定的表格视图单元格

从 Struct 创建的数组中存储的选定表格单元格中播放音频