使用pandas从xlsx读取某些列,并使用另一行的条件

时间:2018-02-05 13:13:32

标签: python pandas

我有一个xlsx,前9行是标题。第1行包含一个名称,例如" Bob"和#34; Alice"。

第4行包含'每月'或者'季刊'。

有时会有两个名为“Bob' Bob”的字段。但是有一个月刊'而另一个有季度'在第4行。

我知道我可以阅读名为“Bob'到数据帧,但有没有办法指定哪一个应加载到数据帧?

e.g。下面我有bob和alice,而且我会看到2个Bob字段和2个Alice字段。有没有办法在最初的阅读中以某种方式减少这些?

import pandas as pd
fields = ['Bob', 'Alice']
type = ['Monthly','Quarterly']


df = pd.read_excel('data.xlsx', sheet='Sheet1', usecols=fields)
# See the keys
print df.keys()
# See content in 'Bob'
print df.bob

或者,有没有办法我可以阅读所有4列 - 鲍勃和爱丽丝 - 然后只保留我想要的一个(例如每月为鲍勃,每季度为爱丽丝)?

示例xlsx文件如下(格式化为csv以使其在这里看起来更好):

Mnemonic:,Alice,Bob,Mnemonic:,Alice,Bob
Description:,Test results for Alice,Test results for Bob,Description:,Test results for Alice,Test results for Bob
Source:,(na),(na),Source:,(na),(na)
Native Frequency:,Monthly,Monthly,Native Frequency:,Quarterly,Quarterly
Transformation:,None,None,Transformation:,None,None
Begin Date:,10/31/2006,10/31/2006,Begin Date:,09/30/2006,09/30/2006
Last Updated:,,,Last Updated:,,
Historical End Date:,12/30/2017,12/30/2017,Historical End Date:,12/30/2017,12/30/2017
Geography:,(na),(na),Geography:,(na),(na)
10/31/2006,3,2,09/30/2006,3,2
11/30/2006,3,2,12/31/2006,5,1
12/31/2006,3,2,03/31/2007,7,4
01/31/2007,5,1,06/30/2007,8,7
02/28/2007,5,1,09/30/2007,1,2
03/31/2007,5,1,12/31/2007,6,9
04/30/2007,7,4,03/31/2008,1,5
05/31/2007,7,4,06/30/2008,9,7
06/30/2007,7,4,09/30/2008,9,2
07/31/2007,8,7,12/31/2008,8,7
08/31/2007,8,7,03/31/2009,5,8
09/30/2007,8,7,06/30/2009,3,6

1 个答案:

答案 0 :(得分:0)

在将Excel文件加载到pandas对象之前,没有选项可以过滤行。

如果您的文件是csv格式,您可以迭代csv文件的块并对每个块执行过滤。之后,您将把块聚合到一个数据帧中。有关详细信息,请参阅this answer