首页 > 解决方案 > 单独的csv列,而一行单元格具有不同数量的元素

问题描述

我有一个如下所示的 csv 文件:

原始 csv

我想把它转换成这样的东西:

转换后的 csv

问题是每列的第一行有 4 个元素,而其余行有 7 个元素。我想让它们保持一致。我也想保持原来的列分离。

有人对如何实现这一目标有任何想法吗?

标签: pythonpandascsv

解决方案


假设你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)

推荐阅读