拆分多个分隔符插入到dataframe python

3df52oht  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(306)

我在一个文件中有两个分隔符,我必须按|拆分和按拆分,并在Dataframe中插入3列

input.txt

a,1|b,2,4|c,3
a,2|b|c,5

output should be 

a,b,c
1,[2,4],3
2,NULL,5

I have tried below but got stuck 

import numpy as np
import pandas as pd
import re

file1 = open("sample.txt")

dit={}

for line in file1.readlines():
    read = re.split('\|',line.strip())
    for word in read:
        key = word.split(',')
        if(len(key) > 1):
            dit[key[0]]=key[1]
        else:
            dit[key[0]]="NULL"

df = pd.DataFrame(dit,columns=["a","b","c"],index=[0])

output 

a   b   c
2   NULL    5

输出不更新第一行&不动态wrt到更多逗号分隔。

bkhjykvo

bkhjykvo1#

从dict生成Dataframe需要每个dict值包含该列的值列表。您将用新值覆盖以前的值,因此只获得Dataframe中的最后一行。相反,您必须将值附加到每个键的条目中。

for word in read:
    key = word.split(',')
    if(len(key) > 1):
        dit[key[0]].append(key[1])
    else:
        dit[key[0]].append("NULL")

这意味着您还必须将每个条目初始化为空列表,因此请更改此处理:

for word in read:
    key = word.split(',')
    key_char = key[0]
    if key_char not in dit:
        dit[key_char] = []
    if(len(key) > 1):
        dit[key_char].append(key[1])
    else:
        dit[key_char].append("NULL")

然后您应该将其扩展为更长的键和更长的值;当前代码只接受单字符键和值。

相关问题