我将EAV表加载到Pandas数据帧中。我使用group by来计算每个实体的每个字段的出现次数。我想比较价格和产品名称的数量,提取计数不相等的数据并提取它们进行处理(在这种情况下为a和c)。 目前,计数也出现在与标题不同的行上。任何帮助将不胜感激。
Count
Entity Attribute
a ProductName 10
Price 11
b ProductName 2
Price 2
c ProductName 3
Price 4
答案 0 :(得分:0)
我认为Entities
到columns
的第一步是unstack
:
df1 = df['Count'].unstack(0)
print (df1)
Entity a b c
Attribute
Price 11 2 4
ProductName 10 2 3
然后按DataFrame.loc
选择列,并按Series.ne
(!=
)比较行数,按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
类似,如果只需要列名:
cols = df1.columns[df1.loc['Price'].ne(df1.loc['ProductName'])].tolist()
print (cols)
['a', 'c']