1

Ich habe eine EAV-Tabelle in einen Pandas-Datenrahmen geladen. Ich habe eine Gruppe verwendet, um die Vorkommen jedes Felds jeder Entität zu zählen. Ich möchte die Anzahl der Preise und Produktnamen vergleichen, diejenigen mit ungleichen Zahlen extrahieren und sie zur Verarbeitung extrahieren (a und c in diesem Fall). Derzeit wird die Zählung auch in einer anderen Zeile als die Kopfzeilen angezeigt. Jede Hilfe wäre willkommen.Wie vergleiche ich die Zählungen nach einer Gruppe in Pandas für jede Gruppe?

     Count 
Entity Attribute 
a  ProductName  10 
     Price   11 
b  ProductName  2 
     Price    2 
c  ProductName  3 
     Price    4 

Antwort

0

Ich denke ersten Schritt unstack ist für Entities zu columns:

df1 = df['Count'].unstack(0) 
print (df1) 
Entity  a b c 
Attribute    
Price  11 2 4 
ProductName 10 2 3 

Dann Spalten auswählen, indem DataFrame.loc und vergleichen Reihen von Series.ne (!=), letzte Filter Spalten von boolean mask:

print (df1.loc['Price'].ne(df1.loc['ProductName'])) 
Entity 
a  True 
b False 
c  True 
dtype: bool 

df2 = df1.loc[:, df1.loc['Price'].ne(df1.loc['ProductName'])] 
print (df2) 
Entity  a c 
Attribute   
Price  11 4 
ProductName 10 3 

Ähnlich, wenn nur Spaltennamen benötigt werden:

cols = df1.columns[df1.loc['Price'].ne(df1.loc['ProductName'])].tolist() 
print (cols) 
['a', 'c'] 
Verwandte Themen