我有一个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
答案 0 :(得分:0)
在将Excel文件加载到pandas
对象之前,没有选项可以过滤行。
如果您的文件是csv格式,您可以迭代csv文件的块并对每个块执行过滤。之后,您将把块聚合到一个数据帧中。有关详细信息,请参阅this answer。