python - Pandas :解析结构化非表格文本中的值

标签 python pandas

我有一个格式如下的文本文件:

k1[a-token]
v1
v2
k2[a-token]
v1'
k3[a-token]
v1"
v2"
v3"

将这些数据读入这种形式的数据框的最简单方法是什么:

        A       B
0       k1      v1
1       k1      v2
2       k2      v1'
3       k3      v1"
4       k3      v2"
5       k3      v3"

那不涉及手动循环?或者是否有任何其他库允许我仅输入一些正则表达式来指定我的文本文件的结构并以上述表格形式输出数据?

最佳答案

设置
从@jezrael 借用

import pandas as pd
from pandas.compat import StringIO

temp=u"""
k1[a-token]
v1
v2
k2[a-token]
v1'
k3[a-token]
v1"
v2"
v3"
"""
#after testing replace 'StringIO(temp)' to 'filename.csv'
df = pd.read_csv(StringIO(temp), sep="|", names=['B'])
print (df)

  • str.extract 在正则表达式中指定参数并向前看
  • 使用duplicated 来标识我们要保留的行。

df = df.B.str.extract('(?P<A>.*(?=\[a-token\]))?(?P<B>.*)', expand=True).ffill()
df[df.duplicated(subset=['A'])].reset_index(drop=True)

    A    B
0  k1   v1
1  k1   v2
2  k2  v1'
3  k3  v1"
4  k3  v2"
5  k3  v3"

关于python - Pandas :解析结构化非表格文本中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42184014/

相关文章:

python - Rs deSolve 和 Python odeint 之间的差异

python - 与 Pandas 合并的更简洁的方法

python - 如何使用 Pandas 对与给定条件匹配的列中的值求和?

python - 将标题重置为索引并将其插入一行

python - {{ form }} 标签如何在 Django 注册应用程序中工作

Python 3.4.3 asyncio 关键字 SyntaxError

python - 如何解决 AMD64 Win Python35_d.lib 中缺少 PyModule_Create2 的问题?

python - App Engine 实体到字典

python - 如何浏览数据框并对文本进行正面或负面分类?

python - 将 Pandas 时间戳插入 Mongodb