在不将列减少为一的情况下反转 HotEncoding
Reversal of HotEncoding without reducing columns to one
我有一个数据集,将每笔交易显示为一行。
例如;
Item_1
Item_2
Item_3
NaN
1
1
1
1
NaN
table 有 611 列,1180 行,因此有 611 个项目和 1180 个事务。
我正在寻找购物篮分析,因此我需要将所有具有“1”的行更改为项目 'name'
例如...
Item_1
Item_2
Item_3
NaN
Item_2
Item_3
Item_1
Item_2
NaN
然后我的目标是删除 header 列,让每一行上的每个交易都对齐,没有 NaN
即
No_header
No_header
No_header
Item_2
Item_3
NaN
Item_1
Item_2
NaN
试试这个:
items = df.apply(lambda col: col.map({1: col.name})).apply(lambda row: row[~row.isna()].tolist(), axis=1)
输出:
>>> items
0 [Item_2, Item_3]
1 [Item_1, Item_2]
dtype: object
>>> type(items)
pandas.core.series.Series
我有一个数据集,将每笔交易显示为一行。
例如;
Item_1 | Item_2 | Item_3 |
---|---|---|
NaN | 1 | 1 |
1 | 1 | NaN |
table 有 611 列,1180 行,因此有 611 个项目和 1180 个事务。
我正在寻找购物篮分析,因此我需要将所有具有“1”的行更改为项目 'name'
例如...
Item_1 | Item_2 | Item_3 |
---|---|---|
NaN | Item_2 | Item_3 |
Item_1 | Item_2 | NaN |
然后我的目标是删除 header 列,让每一行上的每个交易都对齐,没有 NaN
即
No_header | No_header | No_header |
---|---|---|
Item_2 | Item_3 | NaN |
Item_1 | Item_2 | NaN |
试试这个:
items = df.apply(lambda col: col.map({1: col.name})).apply(lambda row: row[~row.isna()].tolist(), axis=1)
输出:
>>> items
0 [Item_2, Item_3]
1 [Item_1, Item_2]
dtype: object
>>> type(items)
pandas.core.series.Series