将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中[重复]的主要内容,如果未能解决你的问题,请参考以下文章