Python 数据帧的基于行的筛选器

Python 数据帧的基于行的筛选器,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我想对数据帧执行分析。 这是我的数据帧格式 df_Input=pd.read_excel(“/home/cc/Downloads/date.xlsx”) 我想找到计数(每个唯一值的计数)和每个唯一ID可以保存的唯一值。输出应该是如下所示的数据帧 ID | BOOK_Count | Book_values |Type_count | Type_values ----------------------------------------------------------- 1 |

我想对数据帧执行分析。 这是我的数据帧格式

df_Input=pd.read_excel(“/home/cc/Downloads/date.xlsx”)

我想找到计数(每个唯一值的计数)和每个唯一ID可以保存的唯一值。输出应该是如下所示的数据帧

ID  |  BOOK_Count | Book_values  |Type_count |  Type_values
-----------------------------------------------------------
1   |    2        |  [ABC,DCF]   | 1         |    [MAR,oop]
45  |    2        |  [PQR,EDF]   | 2         |    [Fin,TAB]

我试过了,但是有很多圈。提前感谢

IIUC,您可以使用以下功能:

df_out = df.groupby('ID')['BOOK','Type'].agg(['nunique', lambda x: list(set(x))])
df_out = df_out.rename(columns={'nunique':'count', '<lambda>':'values'})
df_out.columns = df_out.columns.map('_'.join)
print(df_out)

假设我们有这个数据帧:

    ID  BOOK type
0   1   ABC  MAR
1   0   PQR  TAB
2   1   EDF  Fin
3   0   DCF  oop
4   1   PQR  TAB
您可以使用
json
聚合格式,如下所示:

aggreg = {
'BOOK':{
    'BOOK_COUNT' : len,
    'BOOK_values' : lambda r : r.tolist()
},

'type':{
    'Type_COUNT' : len,
    'Type_values' : lambda r : r.tolist()
} 
}
然后,使用
groupby

df.groupby('ID').agg(aggreg)

#output :
          BOOK              type
    BOOK_COUNT  BOOK_values Type_COUNT  Type_values
ID              
0            2    [PQR, DCF]        2   [TAB, oop]
1            3    [ABC, EDF, PQR]   3   [MAR, Fin, TAB]

是的,只是身份证
aggreg = {
'BOOK':{
    'BOOK_COUNT' : len,
    'BOOK_values' : lambda r : r.tolist()
},

'type':{
    'Type_COUNT' : len,
    'Type_values' : lambda r : r.tolist()
} 
}
df.groupby('ID').agg(aggreg)

#output :
          BOOK              type
    BOOK_COUNT  BOOK_values Type_COUNT  Type_values
ID              
0            2    [PQR, DCF]        2   [TAB, oop]
1            3    [ABC, EDF, PQR]   3   [MAR, Fin, TAB]