从 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 = 3
、address_value
在不同的列中,则为 555 Something Street。所有lot_numbers
和address_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 中的选定单元格访问索引/行/列的主要内容,如果未能解决你的问题,请参考以下文章