将dict动态附加到空的Pandas.Dataframe中[重复]

Posted

技术标签:

【中文标题】将dict动态附加到空的Pandas.Dataframe中[重复]【英文标题】:Dynamically append dict into empty Pandas.Dataframe [duplicate] 【发布时间】:2017-08-24 19:22:46 【问题描述】:

我正在通过正则表达式逐行解析大量文本文件(~10M 行),以过滤和清理需要的内容。

每个matched.groupdict() 返回'col1:'...','col2:'...','col3:'...',我想将它们收集到一个DataFrame 中。就像数据库一样,每个条目都有自己的索引。

在过去的几天里,我对 SO、Pandas.DataFrame 文档、Coursera 对 DataFrames 进行了大量研究,但没有任何效果。大多数解决方案建议创建我的groupdict() 列表,然后创建一个 DataFrame,但这会占用太多内存,我需要它更加动态。

我该怎么办?

pattern = re.compile("(?P<col1>...)(?P<col2>...)(?P<col3>...)")
data = pd.DataFrame()
with open("massive.txt", 'r') as massive:
    for line in massive:
        matched = pattern.search(line)
        if(matched):
            data.append(matched.groupdict(), ignore_index=True)

data
Empty DataFrame
Columns: []
Index: []

【问题讨论】:

append不是DataFrames的inplace操作,所以需要重新赋值,即data = data.append(...) 那么,你看过documentation for DataFrame.append 吗?因为它非常清楚地表明“将其他行附加到此帧的末尾,返回一个新对象。”但是,根据经验,您几乎可以假设没有pandas 方法(默认情况下)就地执行。 哦尴尬。 :D 我真傻,我完全忘了重新分配。感谢 root 和 juanpa-arrivillaga :D 【参考方案1】:

...傻我

...
data = data.append(matched.groupdict(), ignore_index=True)

【讨论】:

以上是关于将dict动态附加到空的Pandas.Dataframe中[重复]的主要内容,如果未能解决你的问题,请参考以下文章

创建一个基于空的numpy数组并附加现有数组

将列表添加到空的 python 列表问题

将当前日期添加到空的日期字段

如何将对象添加到空的用户界面文件?

如何在for循环中将数据附加到空列表?

将数据帧附加到空数据帧不起作用