按字符串过滤块

Posted

技术标签:

【中文标题】按字符串过滤块【英文标题】:Filtering Chunks by A string 【发布时间】:2017-06-30 15:14:43 【问题描述】:

我有 60M 多行的 csv 文件。我只对其中的一部分感兴趣,并希望将它们放入数据框中。

这是我正在使用的代码:

iter_csv = pd.read_csv('/Users/xxxx/Documents/globqa-pgurlbymrkt-Report.csv', iterator=True, chunksize=1000)
df = pd.concat([chunk[chunk['Site Market (evar13)'].str.contains("Canada", na=False)] for chunk in iter_csv]) 

在这里回答:pandas: filter lines on load in read_csv

我收到以下错误:

AttributeError: Can only use .str accessor with string values, which use np.object_ dtype in pandas

似乎无法弄清楚出了什么问题,希望在这里得到指导。

【问题讨论】:

【参考方案1】:

首先尝试验证表示字符串的数据。 您期望使用 .contains() 的最后一个块返回什么? 似乎数据可能丢失了,如果是这样,那么它就不是字符串了。

【讨论】:

如果是这种情况,是否有与 Chunk 函数等效的 dropna?我知道它不是数据框,可能没有这个 恐怕我不知道,我对 dropna 的经验非常有限。看来您仍然可以使用 pandas.pydata.org/pandas-docs/stable/generated/… 从每个帧中请求任意样本

以上是关于按字符串过滤块的主要内容,如果未能解决你的问题,请参考以下文章

React JS:按字符串过滤数组

Django Queryset 按确切字符串过滤数组字段

按数据框中是不是存在字符串过滤行

如何按字符串过滤熊猫数据框?

在 Gatsby 和 Contentful 中按日期过滤

熊猫数据框 - 按字符串过滤/选择列是不是保留顺序?