python - 使用python组合来自2行的值
问题描述
我有一个在 excel 中看起来像这样的二维数组数据:
01-Jan-1990 0:00:01 A abcdefghi jklmnopq
01-Jan-1990 0:00:02 A abcdefghi xxxyyyvvv fefwwe qqqqq
01-Jan-1990 0:00:02 xwwwww xxxxxxx yyyy
01-Jan-1990 0:00:05 B qwerty qwerty
01-Jan 1990 0:00:06 C popopop qwqwqwq tytytyty sss
在数据中,
[['01-Jan-1990 0:00:01','A','abcdefghi jklmnopq'],
['01-Jan-1990 0:00:02','A','abcdefghi xxxyyyvvv fefwwe qqqqq'],
['01-Jan-1990 0:00:02','\t','xwwwww xxxxxxx yyyy'], #\t instead of empty
['01-Jan-1990 0:00:05','B','qwerty qwerty'],
['01-Jan 1990 0:00:06','C','popopop qwqwqwq tytytyty sss']]
想问是否有任何方法可以将第 3 行的值组合到第 2 行没有的字符串中A,B,C
?
所需的输出如下:
01-Jan-1990 0:00:01 A abcdefghi jklmnopq
01-Jan-1990 0:00:02 A abcdefghi xxxyyyvvv fefwwe qqqqq xwwwww xxxxxxx yyyy
01-Jan-1990 0:00:05 B qwerty qwerty
01-Jan 1990 0:00:06 C popopop qwqwqwq tytytyty sss
用期望的输出和缺少的字段编辑
解决方案
假设您的数据存储在 variable 中data
,您可以使用itertools.groupby
子列表的第一项对子列表进行分组,然后使用str.join
空格将每个组的最后一项连接起来:
from itertools import groupby
from operator import itemgetter
[[*l[0][:-1], ' '.join(m for *_, m in l)] for k, g in groupby(data, key=itemgetter(0)) for l in (list(g),)]
这将返回:
[['01-Jan-1990 0:00:01', 'A', 'abcdefghi jklmnopq'],
['01-Jan-1990 0:00:02', 'A', 'abcdefghi xxxyyyvvv fefwwe qqqqq xwwwww xxxxxxx yyyy'],
['01-Jan-1990 0:00:05', 'B', 'qwerty qwerty'],
['01-Jan 1990 0:00:06', 'C', 'popopop qwqwqwq tytytyty sss']]
推荐阅读
- cmake - CMakelist #cmake #Cmakelist 中的变体声明
- ios - 为什么 Apple 在 iOS 13.3.1 上阻止在免费帐户上使用外部框架?
- material-ui - React Admin Input-components 总是为 helperText 添加一些额外的空间
- node.js - 是否可以使用 nodejs 加载 ansi 编码的字符串
- r - 面板数据中的基尼系数
- multithreading - 多线程空内核性能不一致
- javascript - 发出 VueJS 中的承诺
- android - Camera2 LENS_FOCUS_DISTANCE 的单位
- php - 在 apache 中使用 .htacces 文件清理 url 重写
- c++ - PowerPC ppc64le 上的 Gcc Woverloaded-virtual 错误