Python:当组标签和单个单元位于原始数据的同一列时,为它们创建单独的列

2024-10-06 10:05:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python新手,我怀疑这个问题以前可能有人问过,但我真的找不到任何相关的线程。因此,这个问题。在

我打算创建一个包含“组标签”和“单个单元”的单独列的数据框,但原始原始数据的结构如下:

import pandas as pd
df = pd.read_table('df.txt',  names = 'data')

上面写着

^{pr2}$

但我想创建一个这样的数据帧

       Group   Unit
    0 group1 unit_a
    1 group1 unit_b
    2 group2 unit_c
    3 group2 unit_d
    4 group2 unit_e
    5 group3 unit_f
    6 group3 unit_g
    ...

也就是说,在原始数据中,单位列在各自的组标签下,并且它们都列在同一列中,而每个组可能包含不同数量的单位。所以我很难使用间隔或其他方法来切片数据。如何将原始数据排序或切片到所需的两列数据帧类型输出中?在

提前谢谢。在


Tags: 数据df原始数据unit单位切片标签线程
1条回答
网友
1楼 · 发布于 2024-10-06 10:05:49

一个非常基本的方法是使用str.contains为一个新的列分配掩码值,过滤列匹配的行(例如group1, group1),然后重置索引。在

df = (df.assign(group=df[df.data.str.contains('group')])
        .ffill()
        .query('data != group')
        .reset_index(drop=True)
        .rename(columns={'data':'unit'}))

不过,我还是觉得有一个更简单的方法来解决这个问题。在

演示

^{pr2}$

相关问题 更多 >