首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用循环追加数据帧

用循环追加数据帧
EN

Stack Overflow用户
提问于 2016-03-16 08:40:27
回答 1查看 398关注 0票数 0

早上,

我有三个优点,我已经通过导入从excel。我正在尝试创建一个DataFrame,它从每个导入中获取名称('Ticker')列,添加excel的标题('Secto'),并将其相互附加到一起创建一个新的DataFrame。然后,这个新的DataFrame将被导出到excel。

代码语言:javascript
复制
AA  = ['Aero&Def','REITs', 'Auto&Parts']

File = 'FTSEASX_'+AA[0]+'_Price.xlsx'
xlsx = pd.ExcelFile('C:/Users/Ben/'+File)
df = pd.read_excel(xlsx, 'Price_Data')
df = df[df.Identifier.notnull()]
df.fillna(0)
a = []
b = []
for i in df['Ticker']:
    a.append(i)
    b.append(AA[0])
raw_data = {'Ticker': a, 'Sector': b}
df2 = pd.DataFrame(raw_data, columns = ['Ticker', 'Sector'])

del AA[0]

for j in AA:
    File = 'FTSEASX_'+j+'_Price.xlsx'
    xlsx = pd.ExcelFile('C:/Users/Ben/'+File)
    df3 = pd.read_excel(xlsx, 'Price_Data')
    df3 = df3[df3.Identifier.notnull()]
    df3.fillna(0)
    a = []
    b = []
    for i in df3['Ticker']:
        a.append(i)
        b.append(j)
    raw_data = {'Ticker': a, 'Sector': b}
    df4 = pd.DataFrame(raw_data, columns = ['Ticker', 'Sector'])
    df5 = df2.append(df4)

我目前正在获得以下,但显然第二个导入,标题为'REITs‘没有被捕获。

代码语言:javascript
复制
Ticker  Sector
0   AVON-GB Aero&Def
1   BA-GB   Aero&Def
2   COB-GB  Aero&Def
3   MGGT-GB Aero&Def
4   SNR-GB  Aero&Def
5   ULE-GB  Aero&Def
6   QQ-GB   Aero&Def
7   RR-GB   Aero&Def
8   CHG-GB  Aero&Def
0   GKN-GB  Auto&Parts

我怎样才能做到这一点呢?或者有更好的更多的琵琶方法来实现这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-16 09:43:50

我会这样做:

代码语言:javascript
复制
import pandas as pd

AA  = ['Aero&Def','REITs', 'Auto&Parts']

# assuming that ['Ticker','Sector','Identifier'] columns are in 'B,D,E' Excel columns
xl_cols='B,D,E'

dfs = [ pd.read_excel('FTSEASX_{0}_Price.xlsx'.format(f),
                      'Price_Data',
                      parse_cols=xl_cols,
                     ).query('Identifier == Identifier')
        for f in AA]

df = pd.concat(dfs, ignore_index=True)

print(df[['Ticker', 'Sector']])

解释:

.query('Identifier == Identifier') -只给出Identifier不为空的行(使用的事实是value == NaN总是False)

当使用Pandas时,您不希望遍历数据帧.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36030477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档