MBl*_*eld 4 python pivot dataframe pandas
我一直在试图找出一种方法来转换这个数据框。它只包含两列;一种是时间序列数据,另一种是事件标记。这是初始数据帧的示例:
df1 = pd.DataFrame({'Time': ['1:42 AM','2:30 AM','3:29 AM','4:19 AM','4:37 AM','4:59 AM','5:25 AM','5:33 AM','6:48 AM'],
'Event': ['End','Start','End','Start','End','Start','Start','End','Start']})
Run Code Online (Sandbox Code Playgroud)
这就是我希望转换后的样子:
df2 = pd.DataFrame({'Start': ['', '2:30 AM', '4:19 AM', '4:59 AM', '5:25 AM', '6:48 AM'],
'End': ['1:42 AM', '3:29 AM', '4:37 AM', '', '5:33 AM', '']})
Run Code Online (Sandbox Code Playgroud)
本质上,我想将事件标记为新列,并在事件发生时将开始时间和结束时间在表格中配对。
此示例包括有时会发生的两种异常:
我查看了pivot,pivot_table但无法添加获得我想要的输出的索引。很确定这应该是可能的,我只是还不是数据帧方面的专家。
尝试:
df1["tmp"] = df1["Event"].eq("Start").cumsum()
df1 = df1.pivot(index="tmp", columns="Event", values="Time").fillna("")
df1.columns.name, df1.index.name = None, None
print(df1[["Start", "End"]])
Run Code Online (Sandbox Code Playgroud)
印刷:
Start End
0 1:42 AM
1 2:30 AM 3:29 AM
2 4:19 AM 4:37 AM
3 4:59 AM
4 5:25 AM 5:33 AM
5 6:48 AM
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
68 次 |
| 最近记录: |