python-3.x - 获取每个 id 的所有列,其中该列等于某个值

标签 python-3.x pandas dataframe indexing

假设我有一个 pandas 数据框:

id   A   B   C   D
id1  0   1   0   1
id2  1   0   0   1
id3  0   0   0   1
id4  0   0   0   0

我想选择每个 id 且列名称等于 1 的所有列,该列表将成为数据框中的新列。

预期输出:

id   A   B   C   D   Result
id1  0   1   0   1   [B,D]
id2  1   0   0   1   [A,D]
id3  0   0   0   1   [D]
id4  0   0   0   0   []

我尝试了 df.apply(lambda row: row[row == 1].index, axis=1) 但“Result”的输出不是上面指定的形式

最佳答案

你可以做你想做的事情添加 .tolist():

df['Result'] = df.apply(lambda row: row[row == 1].index.tolist(), axis=1)

也就是说,您使用列表作为单列内的值的方法似乎与 Pandas 保持数据表格的方法(每个单元格只有一个值)相矛盾。使用嵌套列表而不是 pandas 来完成您想要做的事情可能会更好。

关于python-3.x - 获取每个 id 的所有列,其中该列等于某个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66608729/

相关文章:

python - 全局名称 'inf' 未定义

python - 如何将df的每一列转换成字典

python-3.x - 使用 PyAudio 防止 ALSA 欠载

python - 我将如何计时这个功能

python - 矢量化 DataFrame Python-pandas?

r - 从 data.frame 中提取子集

python - 使用 apply 向现有数据框添加 2 个新列

python-3.x - 这两种在 Python 中建立网络连接的方式之间的实际区别是什么?

python-3.x - 请求返回响应 447

python - Pandas 的差异但用户定义的函数