如何将含零值多列数据集重排为仅含非零值的单列序列
实现方法
以下是不同场景下可直接使用的处理方案,按需选择即可:
方案1:Python实现(灵活性最高,适配后续数据二次处理)
先把原始数据集保存为data.txt文件,运行以下代码即可直接得到目标格式结果:
res = [] with open("data.txt", "r", encoding="utf-8") as f: for line in f: num_list = line.strip().split() for n in num_list: if float(n) != 0: res.append(n) # 直接打印空格分隔的结果 print(" ".join(res)) # 如果需要保存到本地文件,取消注释下面两行即可 # with open("output.txt", "w", encoding="utf-8") as f: # f.write(" ".join(res))
方案2:Linux/macOS 终端一行命令(无需写代码,直接处理本地文件)
进入data.txt所在的目录后,执行以下命令直接输出结果:
tr -s ' \n' '\n' < data.txt | grep -v '^0\.0*$' | tr '\n' ' '
需要保存结果到文件的话,在命令末尾加> output.txt即可。
方案3:Excel/WPS 可视化操作(适合完全无代码基础的场景)
操作步骤:
- 把所有原始数据粘贴到表格A列,选中A列后点击「数据」选项卡的「分列」功能,分隔符选择「空格」,完成后数据会自动拆分到多列
- 选中所有拆分后的数值区域,复制后右键点击空白单元格,选择「选择性粘贴」并勾选「转置」,把多列数据转换为单列
- 选中这一列,开启「筛选」功能,取消勾选0值,剩下的就是所有非0数值
- 要合并为空格分隔的文本,在空白单元格输入公式
=TEXTJOIN(" ",TRUE,筛选后的列范围)回车即可。
内容的提问来源于stack exchange,提问作者Rlearner
相关产品推荐
相关产品推荐

