使用虚拟列中的文本字符串创建dataframe列

2024-09-27 23:20:37 发布

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

我有一个dataframe,在这里我使用get\ dummies创建了几个列(测向地球, 测向风, df.水, 测向火灾, df.心脏-例如)和groupby来聚合行,因此现在一行可以有多个带有1的伪列。数据帧现在如下所示:

ID土风水火心
12 0 1 1 0 1
13 1 0 0 0
14 1 0 1 0 0

我需要创建一个列来检查每一个伪列,并写入适用于每一行的列名,如下所示:

ID地风水火心功
12 0 1 1 0 1风、水、心
13 1 0 1 0 0土,水
14 1 0 1 0土、水、心

我真的不知道从哪里开始,我的搜索也没有让我走得很远。你知道吗


Tags: 数据id地球dataframedfgetgroupbydummies
2条回答
df = pd.DataFrame(
            { 'A': [0, 0, 0],
            'B': [1, 0, 0],
            'C': [0, 1, 0],
            'D': [0, 0, 0],
            'E': [1, 0, 1],
            'F': [0, 0, 1],
            }
                )

df

    A   B   C   D   E   F
0   0   1   0   0   1   0
1   0   0   1   0   0   0
2   0   0   0   0   1   1

你可能在看一个像上面那样的测向仪。可以执行以下操作来拉取包含1的列。你知道吗

columns = []
for col in df.T:
    columns.append(df.T[df.T[col] == 1].index.tolist())

has1 = pd.DataFrame(columns).apply(lambda x: ', '.join(x[x.notnull()]), axis = 1)
df['Is1'] = has1

df

    A   B   C   D   E   F   Is1
0   0   1   0   0   1   0   B, E
1   0   0   1   0   0   0   C
2   0   0   0   0   1   1   E, F

使用

df['Powers'] = df.apply(lambda s: ', '.join(s.index[s.eq(1)]), axis=1)

相关问题 更多 >

    热门问题