python - 读取具有键值对的文本文件,并使用 python pandas 将每一行转换为一个字典

标签 python pandas

我有一个文本文件 (one.txt),其中包含任意数量的键值对(其中键和值由 = 分隔 - 例如 1=8)。以下是一些示例:

1=88|11=1438|15=KKK|45=00|45=00|21=66|86=a
4=13|11=1438|49=DDD|8=157.73|67=00|45=00|84=b|86=a
6=84|41=18|56=TTT|67=00|4=13|45=00|07=d

我需要创建一个包含字典列表的 DataFrame,每一行作为列表中的一个字典,如下所示:

[{1:88,11:1438,15:kkk,45:7.7....},{4:13,11:1438....},{6:84,41:18,56:TTT...}]

df = pd.read_csv("input.txt",names=['text'],header=None)
data = df['text'].str.split("|")
names=[  y.split('=') for x in data for y in x]
ds=pd.DataFrame(names)
print ds

如何通过 = 符号拆分来为每一行创建字典?

它应该是一行多列。 DataFrame 应该将所有键作为行,将值作为列。

示例:

1 11 15 45 21 86 4 49 8 67 84 6 41 56 45 07
88 1438 kkk 00 66 a
na 1438 na .....

最佳答案

我认为执行.pivot会工作。试试这个:

import pandas as pd

df = pd.read_csv("input.txt",names=['text'],header=None)
data = df['text'].str.split("|")
names=[  y.split('=') for x in data for y in x]
ds=pd.DataFrame(names)
ds = ds.pivot(columns=0).fillna('')

.fillna('') 删除 None 值。如果您想替换为 na,可以使用 .fillna('na')

输出:

ds.head()

   1
0 07   1    11   15 21 4 41  45 49 56 6 67 8 84 86
0     88
1         1438
2               KKK
3                            00
4                            00

对于空间,我没有打印整个数据帧,但它根据键进行列索引,然后根据每行的值进行值(保留按行概念的字典)。

关于python - 读取具有键值对的文本文件,并使用 python pandas 将每一行转换为一个字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51225358/

相关文章:

python - 将日期添加到嵌套列表中的列表项

python - Tensorflow + google ml-engne 本地预测 : How CSV quotes should be processed?

Python:如何通过一列中的重复值对一组数据进行分箱

python - 计算 Pandas 数据框行之间的百分比差异

python - 如果 None 或 nan 则合并 pandas 中的两行

python - 独立移动数组中的行

python - 在 Windows 中使用 python 安装字体

python - Tkinter 中按钮的透明背景

Python request.get() 返回 404 页面未找到

python-3.x - 运行经过训练的机器学习模型时出现错误