【发布时间】:2023-01-13 14:40:49
【问题描述】:
list_Crashes = ['Startup', 'Crash in A', 'Shutdown', 'Crash in B', 'Crash in C', 'Startup', 'Crash in D',
'Startup', 'Crash in E', 'Crash in F', 'Crash in G', 'Shutdown', 'Crash in X', 'Crash in Y', 'Crash in Z']
我有一个包含 2 列的表。 该代码将检查列表的前一个元素并查找(启动/关闭): 示例:如果崩溃发生在启动之后; State 列将在 Crash 前面填充 Startup,如下表所示:
| Crashes | State |
|---|---|
| Crash in A | Startup |
| Crash in B | Shutdown |
| Crash in C | Shutdown |
| Crash in D | Startup |
| Crash in E | Startup |
| Crash in F | Startup |
| Crash in G | Startup |
| Crash in X | Shutdown |
| Crash in Y | Shutdown |
| Crash in Z | Shutdown |
我面临的挑战是字母每次都是随机的,所以我必须在我的代码中使用“崩溃”而不是特定的字母!
关于如何执行此操作的任何建议?
编辑:现实生活中的例子(每一行都是列表的一个元素):
12:33:04.1753 | Startup Configuration dazdazdazd
12:35:15.0142 | Crash in A <546464>, thread 61
12:35:53.0396 | Crash in B <5>, 3e9fc dazdazd
12:35:54.1664 | Crash in C <70>,bfc690dasfff
12:35:55.3817 | Crash in D <80>,de5484sdazdazd
12:36:01.6642 | Crash in E <50>,bfc428fdsfsgdgsgsd
12:53:34.6462 | System Shutdown
12:53:48.1724 | Exception: Crash in Y <01>, 38310dazdazdafaga
@mozway 的答案中使用的代码:
def gen(lst):
last_non_crash =''
for x in lst:
if 'Crash in' in x:
last_non_crash = x
else:
yield [x, last_non_crash]
dataf = pd.DataFrame(gen(Crashtype), columns = ['Crashes', 'State'])
输出 :
Crashes State
0 12:53:34.6462 | [1230.490] System shutdown\n 12:36:01.6642 | Exception: Crash in E<50>,...
预期输出:
Crashes State
0 Crash in A Startup
1 Crash in B Startup
2 Crash in C Startup
3 Crash in D Startup
4 Crash in E Startup
5 Crash in Y Shutdown
【问题讨论】:
-
我仍然不清楚您展示的示例列表如何将关闭关联到之前或之后的元素?例如,以下 sn-p 并不一定意味着 F 和 G 中的崩溃与启动相关联:[...启动,E 中的崩溃,F 中的崩溃,G 中的崩溃,关机,..]
-
如果崩溃发生在关机之后; State 列将在 Crash 前填充 Shutdown