2017-06-16 185 views
2

获得一个单元格与另一个单元格相关联的最佳方式是什么?Python - 熊猫索引

我有标识的文章,并在下面的CSV文件(没有数据帧):

list = ['ABC0123', 'DEF0123'] 

> Column 1 Column 2 Column 3 Column 4 
> "Date" 20170101 "Identifier" ABC
>"OpenPrice" 500  "Currency"  USD 
>"ClosePrice" 550  "foo"   bar 
> ... 
> ... 
> ... 
> "Date" 20170101 "Identifier" DEF
>"OpenPrice" 600  "Currency"  USD 
>"ClosePrice" 650  "foo"   bar 

我想要得到的收盘价为标识,如550和650, 在解析文件,查找标识符,然后向下移动2,向左移动2。

“关闭价格”重复本身,我想获取标识符列表的值。此外,iloc和loc仅获取同一行中的值,那么获取值的最简单方法是什么?

+0

你必须改变格式的能力吗?如果每种类型的数据都有一列,那么您将有更容易的时间:日期,标识符,OpenPrice,ClosePrice,货币等,然后每行将是一个完整的记录。 –

+0

首先感谢您帮助我的问题的格式,其次,不幸的是,我知道您的意思,但我正在处理发送给我的大文件,而不是能够控制输出。 – bloo

回答

1

让我们尝试:

df.iloc[df[df['Column 4'].isin(list)].index + 2,1] 
+0

花了我一些时间来申请我的循环,调整和测试我的数据集,但是..是的!你能否提供一些解释,说明它是如何和为什么起作用的,或者指导我阅读文档?不知道这是否是正确的https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Index.html,但不能说这有帮助。 – bloo

+0

好的...让我们一起努力吧。 df ['Column 4']在列表中。对这两条记录返回true。然后,我们使用布尔索引选择来获取记录,并且.index返回索引add 2到这个索引以下行。现在,使用.iloc作为数据框的索引位置并获取第二列。 –

+0

谢谢,我想除了索引行的思维过程之外,解决方案的本质是知道如何从那里移动。我以前没有尝试'+ 2,1'。 – bloo