python - 拆分多个分隔符插入到数据框python
问题描述
我在一个文件中有两个分隔符,我必须用 | 分割 并拆分,并插入到数据框中的 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 以更多逗号分隔。
解决方案
从 dict 制作数据框要求每个 dict 值包含该列的值列表。您用新值覆盖以前的值,因此您只能获得数据框中的最后一行。相反,您必须将值附加到每个键的条目。
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")
然后,您应该将其扩展为更长的键和更长的值;您当前的代码只接受单字符键和值。
推荐阅读
- javascript - 如何使用 responsive-loader 和 jest?
- c# - 处置 EntityConnection 还处置 DbConnection 内?
- swift - HydraSDK 连接失败
- python - 如何以时间(不是日期)为 x 轴绘制散点图
- c++ - 如何将 lambda 返回的浮点数组插入到浮点向量中?
- python - 在 Windows 上使用 python -m pip install 和 numpy(用于 tensorflow 对象检测)的编译器错误
- r - 如何在 R 中使用 shinyDirButton 选择多个文件夹
- sql - HIVE - 基于日期计算分区的统计信息
- c# - xUnit - 取消测试时未调用 Collection Fixture 类的 Dispose 方法
- javascript - 对格式不正确的日期进行排序