首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除不是完整四分之一的行。

删除不是完整四分之一的行。
EN

Stack Overflow用户
提问于 2015-12-21 08:20:59
回答 2查看 61关注 0票数 0

Stkcd是股票id,Trdmnt是记录时间,Mretwd是该股票数量的增加。我有一个股票excel表,如上图所示,我想分析每个季度(2015-1 2015-2 2015-3 is one quater)的数据,如果Trdmnt数据不是一个完整的四元数据,我将删除不完整的行。例如:

代码语言:javascript
复制
000001  2011-04 0.131841

没有

代码语言:javascript
复制
000001  2011-05 xx
000001  2011-06 xx

所以我们需要删除

代码语言:javascript
复制
000001  2011-04 0.131841

代码语言:javascript
复制
000002  2014-12 0.275229
000002  2014-11 0.159574

没有

代码语言:javascript
复制
000002  2014-10 xx

所以我们需要删除

代码语言:javascript
复制
000002  2014-12 0.275229
000002  2014-11 0.159574.

结果如下:

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-23 03:05:18

我认为这并不难,但我不能使用VBA。所以我曾经解决另一种语言。我希望这段代码能帮助你解决问题。

代码语言:javascript
复制
    # -*- coding: utf-8 -*-
    import xlrd

    if __name__ == "__main__":
        book = xlrd.open_workbook('sample.xls')

        sheet = book.sheet_by_index(0)

        vdict = dict()
        for row in range(3, sheet.nrows):
            id = sheet.cell(row, 0).value
            date = sheet.cell(row, 1).value
            year = int(date[0:4])
            month = int(date[5:])
            value = sheet.cell(row, 2).value

            if id not in vdict:
                vdict[id] = dict()

            if year not in vdict[id]:
                vdict[id][year] = dict()

            vdict[id][year][month] = value

        for id in sorted(vdict):
            for year in sorted(vdict[id]):
                months = [i for i in vdict[id][year]]
                q1 = [x for x in months if (x - 1) / 4 == 0]
                q2 = [x for x in months if (x - 1) / 4 == 1]
                q3 = [x for x in months if (x - 1) / 4 == 2]
                q4 = [x for x in months if (x - 1) / 4 == 3]

                if not len(q1) == 4:
                    for x in q1:
                        del vdict[id][year][x]

                if not len(q2) == 4:
                    for x in q2:
                        del vdict[id][year][x]

                if not len(q3) == 4:
                    for x in q3:
                        del vdict[id][year][x]

                if not len(q4) == 4:
                    for x in q4:
                        del vdict[id][year][x]

        for id in sorted(vdict):
            for year in sorted(vdict[id]):
                for month in sorted(vdict[id][year]):
                    value = vdict[id][year][month]
                    print '%s, %d-%02d, %s' %(id, year, month, value)
票数 0
EN

Stack Overflow用户

发布于 2015-12-23 13:22:11

下面是可以更新.xls文件并输出.csv文件的链接,它可以自动解决问题!http://naoya.tuntunkun.org/

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

https://stackoverflow.com/questions/34391439

复制
相关文章

相似问题

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