我看到了这个问题,我不明白它是什么意思。它与在数据框旋转后将多个索引扁平化为单个索引有关。
我目前正在研究图像处理,我有一个数据帧,有重复的行,但是,每个重复的行有一个不同的值为"主题"。
:
我想删除这些重复的行,即使它们具有不同的值,并将所有重复的所有不同值连接到单个列中,即Aortic enlargement|Pulmonary fibrosis|Atelectasis
。
:
这实际上是一个多部分的问题。
-
我怎样才能达到上述目标?
-
谁能解释一下我所链接的问题,以完全理解它?
额外信息:
我有一个模拟csv文件,如果你需要完全理解我的意思,你可以访问。
将此数据框架视为MRE:
>>> df
image_id class_name
0 47ed17dcb2cbeec15182ed335a8b5a9e Nodule/Mass # <- dup 1
1 47ed17dcb2cbeec15182ed335a8b5a9e Aortic enlargement # <- dup 1
2 47ed17dcb2cbeec15182ed335a8b5a9e Pulmonary fibrosis # <- dup 1
3 7c1add6833d5f0102b0d3619a1682a64 Lung Opacity # <- dup 2
4 7c1add6833d5f0102b0d3619a1682a64 Pulmonary fibrosis # <- dup 2
5 5550a493b1c4554da469a072fdfab974 No finding # <- dup 3
6 5550a493b1c4554da469a072fdfab974 No finding # <- dup 3
要得到预期的结果,您需要按image_id
分组,并将class_name
中的所有值连接在一起,并用' | '
分隔:
>>> df.groupby('image_id')['class_name'].apply(lambda x: ' | '.join(sorted(set(x))))
image_id
47ed17dcb2cbeec15182ed335a8b5a9e Aortic enlargement | Nodule/Mass | Pulmonary f...
5550a493b1c4554da469a072fdfab974 No finding
7c1add6833d5f0102b0d3619a1682a64 Lung Opacity | Pulmonary fibrosis
使用set
删除相同image_id
和sorted
的class_name
副本,以获得class_name
的字典顺序。
您可以使用MultiIndex
来正确显示您的重复行。试一试:
>>> df.set_index(['image_id', 'class_name']).sort_index()
class_id rad_id x_min y_min x_max y_max width height
image_id class_name
000434271f63a053c4128a0ba6352c7f No finding 14 R6 NaN NaN NaN NaN 2336 2836
No finding 14 R2 NaN NaN NaN NaN 2336 2836
No finding 14 R3 NaN NaN NaN NaN 2336 2836
00053190460d56c53cc3e57321387478 No finding 14 R11 NaN NaN NaN NaN 1994 2430
No finding 14 R2 NaN NaN NaN NaN 1994 2430
... ... ... ... ... ... ... ... ...
fff0f82159f9083f3dd1f8967fc54f6a No finding 14 R9 NaN NaN NaN NaN 2048 2500
No finding 14 R14 NaN NaN NaN NaN 2048 2500
fff2025e3c1d6970a8a6ee0404ac6940 No finding 14 R1 NaN NaN NaN NaN 1994 2150
No finding 14 R5 NaN NaN NaN NaN 1994 2150
No finding 14 R2 NaN NaN NaN NaN 1994 2150
[67914 rows x 8 columns]