我将一个更复杂的问题分解为更简单的问题。实际问题有更大的列表和更多的列。
从这个df开始:
i | COL1 | COL2 | COL3 | COL4 | Revenue | QTY | Products
0 | Coin | Gold Krug | Gold Coin | Coins | 2333677473 | 21 | 12
1 | Gold Coin | Coins | Gold Coin | Coins | 2564774784 | 28 | 14
2 | Gold Coin | Coins | Gold Krug | Coins |3256666647 | 35 | 16
3 |Gold Coin | Coins | Coins |Gold Krug | 3456788 | 42 | 18
4 |Gold Krug | Gold Coin | Coins | Coins | 4588960 | 49 | 20
5 |Gold Coin | Coins | Gold Krug | Coins |346869909 |56 | 22
6 |Gold Coin | Coins | Gold Coin | Coins | 3777989 |63 | 24
7 |Gold Coin |Silver Krug |Gold Coin | Coins | 37687589 |70 | 26
8 |Gold Coin | Coins |Gold Coin | Coins | 45789889 |77 | 28
9 |Gold Coin | Gold Krug |Gold Coin |Coins | 468 |84 | 30
我希望输出为 DF,并带有这样的新列:
i | Category | Revenue | QTY |Products
0 |Gold Krug | 2333677473 |21 | 12
2 |Gold Krug | 3256666647 | 35 | 16
3 |Gold Krug | 3456788 | 42 | 18
4 | Gold Krug | 4588960 | 49 | 20
5 | Gold Krug | 346869909 | 56 | 22
7 | Silver Krug | 37687589 | 70 | 26
9 | Gold Krug | 468 | 84 | 30
我使用了这个,但根本不明白如何使用列表中与新列匹配的值创建新列:
KRUG = ['Gold Krug', 'Silver Krug', 'Gold Maple','Gold Eagle']
df = df[df[['COL1', 'COL2', 'COL3', 'COL4 ']].isin(KRUG).any(axis=1)]
print(df)
output :
i |COL1 |COL2 |COL3 |COL4 |Revenue |QTY |Products
0 |Coin |Gold Krug |Gold Coin |Coins |2333677473 |21 |12
2 |Gold Coin |Coins |Gold Krug |Coins |3256666647 |35 |16
3 |Gold Coin |Coins |Coins |Gold Krug |3456788 |42 |18
4 |Gold Krug |Gold Coin |Coins |Coins |4588960 |49 |20
5 |Gold Coin |Coins |Gold Krug |Coins |346869909 |56 |22
7 |Gold Coin |Silver Krug |Gold Coin |Coins |37687589 |70 |26
9 |Gold Coin |Gold Krug |Gold Coin |Coins |468 |84 |30