python - 单独的csv列,而一行单元格具有不同数量的元素
问题描述
我有一个如下所示的 csv 文件:
我想把它转换成这样的东西:
问题是每列的第一行有 4 个元素,而其余行有 7 个元素。我想让它们保持一致。我也想保持原来的列分离。
有人对如何实现这一目标有任何想法吗?
解决方案
假设你df
是这样的:
0 1 2
0 read pass 1000K times. read pass 2000K times. read pass 3000K times.
1 MAX BER WL layer 0 == 11 MAX BER WL layer 0 == 18 MAX BER WL layer 0 == 18
2 MAX BER WL layer 1 == 5 MAX BER WL layer 1 == 15 MAX BER WL layer 0 == 15
您可以.str.split(expand=True)
在每一列和concat()
结果上使用:
out = pd.concat([df[column].str.split(expand=True) for column in df.columns], axis=1)
0 | 1 | 2 | 3 | 4 | 5 | 6 | 0 | 1 | 2 | ... | 4 | 5 | 6 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 读 | 经过 | 1000K | 次。 | 没有任何 | 没有任何 | 没有任何 | 读 | 经过 | 2000K | ... | 没有任何 | 没有任何 | 没有任何 | 读 | 经过 | 3000K | 次。 | 没有任何 | 没有任何 | 没有任何 |
1 | 最大限度 | 误码率 | WL | 层 | 0 | == | 11 | 最大限度 | 误码率 | WL | ... | 0 | == | 18 | 最大限度 | 误码率 | WL | 层 | 0 | == | 18 |
2 | 最大限度 | 误码率 | WL | 层 | 1 | == | 5 | 最大限度 | 误码率 | WL | ... | 1 | == | 15 | 最大限度 | 误码率 | WL | 层 | 0 | == | 15 |
参考样本df
:
csv = '''
read pass 1000K times.,read pass 2000K times.,read pass 3000K times.
MAX BER WL layer 0 == 11,MAX BER WL layer 0 == 18,MAX BER WL layer 0 == 18
MAX BER WL layer 1 == 5,MAX BER WL layer 1 == 15,MAX BER WL layer 0 == 15
'''
df = pd.read_csv(StringIO(csv), header=None)
推荐阅读
- sql - 如何通过 SQL 函数转换使用任何文本格式将日期类型放入访问列
- javascript - 如何在 Javascript 中将此日期格式 2021-03-30T06:14:00.000Z 转换为 2021-03-30T06:14:00+00:00 这种日期格式
- python - 使用 pdblp 从bloomberg 为我的python 代码提取数据时出错
- python - 我如何发送一条命令冷却时间的消息 discord.py
- r - 用大型 GMT 文件中的基因符号替换 ensembl 基因 ID
- android - 浓缩咖啡 - 检查特定图像的回收站视图位置
- python - 使用google colab将其安装在谷歌驱动器中后无法在pip中找到模块
- grails - GrailsPageFilter 未导入 -Grails 4.xx
- r - 检查目标时出错:预期密集具有二维,但得到数组,但仅在最终模型拟合期间,而不是调整
- javascript - 每次在javascript中执行onkeydown事件时,如何输出打印+1?