2017-09-29 84 views
1

我將如何根據python中的缺失值對列進行分區。基於缺失值的分區列

我有以下表有一個數據幀:

Store  Bag 
Alberts ClothBag 
Vons  KateSpade 
Ralphs  GroceryBag1 
Na   apple 
Na   pear 
Na   staples 
Kmart  ShoppingList 
Na   beachball 
Na   milk 
QuikEmart List5 
Na   Duff 
Na   Donuts 

並基於NA或任何其他的方式,我將如何在下表中重現:

Store  Bag    Item 
Alberts ClothBag   ClothBag 
Vons  KateSpade  KateSpade 
Ralphs  GroceryBag1  apple 
Na   GroceryBag1  pear 
Na   GroceryBag1  staples  
Kmart  ShoppingList  beachball 
Na   ShoppingList  milk 
QuikEmart List5   Duff 
Na   List5   Dounuts 

如果沒有Na在商店的下面,那麼項目列將採用Bag的名稱,如前兩列所示。

回答

0
def f(d): 
    if len(d) > 1: 
     r = d.iloc[1:] 
     r['Item'] = r['Bag'] 
     r['Bag'] = d.Bag.iat[0] 
     r['Store'].iat[0] = d.Store.iat[0] 
     return r 
    else: 
     return d.assign(Item=d.Bag) 

df.groupby(df.Store.ne('Na').cumsum(), group_keys=False).apply(f) 

     Store   Bag  Item 
0  Alberts  ClothBag ClothBag 
1  Vons  KateSpade KateSpade 
3  Ralphs GroceryBag1  apple 
4   Na GroceryBag1  pear 
5   Na GroceryBag1 staples 
7  Kmart ShoppingList beachball 
8   Na ShoppingList  milk 
10 QuikEmart   List5  Duff 
11   Na   List5  Donuts 
+0

您好piRsquared,感謝您抽出時間來幫忙,但我相信在代碼中有一個問題,在運行時,Bag和Item列是相同的。 –