0

我有df:

ClientName   ID             ID2         RoomTypeName    RoomDescription
Emerson     3609           NCGY           STANDARD            A2T
Morningstar 3667           ND8Q           STANDARD        C1D,B1Q,B1K
Morningstar 3668           ND8Q           STANDARD        C1Q,B1Q,B2T
Morningstar 3748           ND8Q           STANDARD          B1Q,STU
Morningstar 3748           ND8Q            DELUXE           SQ1,SK1
McDonalds   3773            NI0           STANDARD            STD
McDonalds   3773            NI0            DELUXE             DLC

我希望最终结果按客户端名称、ID 和 ID2 进行分组,并有一个映射或字典来为房间类型名称和房间描述创建一个键值对,例如:如果我搜索 id 3748 的豪华房间类型,它应该输出 SQ1 ,SK1。我怎样才能做到这一点?所需的输出df:

ClientName   ID             ID2         RoomTypeName    RoomDescription
Emerson     3609           NCGY           STANDARD            [A2T]
Morningstar 3667           ND8Q           STANDARD        [C1D,B1Q,B1K]
Morningstar 3668           ND8Q           STANDARD        [C1Q,B1Q,B2T]
Morningstar 3748           ND8Q       STANDARD,DELUXE   [B1Q,STU][SQ1,SK1]
McDonalds   3773            NI0       STANDARD,DELUXE      [STD],[DLC]
4

2 回答 2

0

无需创建字典,只需将 DataFrame 索引更改为以 ID 和 RoomTypeName 作为键:

df = df.set_index(['ID', 'RoomTypeName'])
result = df.loc[('3748', 'DELUXE')]
于 2020-12-02T18:40:55.907 回答
0
df = yourdf.groupby(['ClientName', 'ID', 'ID2'])

当您这样做时,您的数据框将被更改,例如分组的值将作为列表元素在单个单元格中,现在从中创建字典是一项棘手的工作,它是动态的。这意味着您将在字典中将键作为数组。当您分组时,您的clientName某些ID列值将变为列表。如果你用它创建一个字典ID并且RoomDescription你没有得到你期望的结果。

于 2020-12-02T18:49:57.547 回答