我有一个文本文件 (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/