小编Cha*_*lon的帖子

阅读一个巨大的.csv文件

我目前正在尝试从Python 2.7中的.csv文件读取数据,最多包含100万行和200列(文件范围从100mb到1.6gb).对于300,000行以下的文件,我可以(非常慢)地执行此操作,但是一旦我超过该值,我就会出现内存错误.我的代码看起来像这样:

def getdata(filename, criteria):
    data=[]
    for criterion in criteria:
        data.append(getstuff(filename, criteron))
    return data

def getstuff(filename, criterion):
    import csv
    data=[]
    with open(filename, "rb") as csvfile:
        datareader=csv.reader(csvfile)
        for row in datareader: 
            if row[3]=="column header":
                data.append(row)
            elif len(data)<2 and row[3]!=criterion:
                pass
            elif row[3]==criterion:
                data.append(row)
            else:
                return data
Run Code Online (Sandbox Code Playgroud)

getstuff函数中else子句的原因是所有符合条件的元素都将在csv文件中一起列出,所以当我越过它们时我会离开循环以节省时间.

我的问题是:

  1. 如何才能让这个与更大的文件一起使用?

  2. 有什么方法可以让它更快吗?

我的电脑有8GB RAM,运行64位Windows 7,处理器是3.40 GHz(不确定你需要什么信息).

非常感谢您的帮助!

python csv file python-2.7

95
推荐指数
5
解决办法
13万
查看次数

Pandas Dataframes to_html:突出显示表行

我正在使用pandas to_html函数创建表,我希望能够突出显示输出表的底行,它具有可变长度.我没有任何关于html的真实经验,我在网上找到的就是这个

<table border="1">
  <tr style="background-color:#FF0000">
    <th>Month</th>
    <th>Savings</th>
  </tr>
  <tr>
    <td>January</td>
    <td>$100</td>
  </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

所以我知道最后一行必须有<tr style=""background-color:#FF0000">(或者我想要的任何颜色),而不仅仅是<tr>,但我真的不知道怎么做才能让我的表格与我正在制作.我不认为我可以使用to_html函数本身,但是如何在创建表后执行此操作?

任何帮助表示赞赏.

html python pandas

19
推荐指数
2
解决办法
3万
查看次数

在熊猫中循环使用MultiIndex

我有一个MultiIndexed DataFrame df1,并希望以这样的方式循环它,在循环的每个实例中都有一个带有常规非分层索引的DataFrame,它是与外部索引条目对应的df1的子集.即,如果我有:

FirstTable

我想得到

SecondTable

以及随后的C1,C2等我也不知道这些名称究竟是什么(C1等,只是这里的占位符),所以我想循环遍历我拥有的C i值的数量.

我一直在iterrows和各种循环磕磕绊绊,没有得到任何实际结果,也不知道如何继续.我觉得应该存在一个简单的解决方案但是在文档中找不到任何看起来有用的东西,可能是由于我自己缺乏理解.

python multi-index pandas

6
推荐指数
2
解决办法
6214
查看次数

reportlab中的Pandas DataFrames

我有一个DataFrame,并希望将其输出到pdf.我目前正在尝试使用ReportLab,但它似乎不起作用.我在这里收到错误:

        mytable = Table(make_pivot_table(data, pivot_cols, column_order, 'criterion'))
Run Code Online (Sandbox Code Playgroud)

make_pivot_table只需使用pandas pivot_table函数返回一个数据透视表.我得到的错误是

ValueError: <Table@0x13D7D0F8 unknown rows x unknown cols>... invalid data type
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  1. 有没有办法让reportlab与DataFrames一起使用?
  2. 如果没有,我可以使用哪种包装用于同一目的?

python reportlab python-2.7 pandas

5
推荐指数
1
解决办法
5543
查看次数

标签 统计

python ×4

pandas ×3

python-2.7 ×2

csv ×1

file ×1

html ×1

multi-index ×1

reportlab ×1