Python 数据帧的基于行的筛选器
我想对数据帧执行分析。 这是我的数据帧格式 df_Input=pd.read_excel(“/home/cc/Downloads/date.xlsx”) 我想找到计数(每个唯一值的计数)和每个唯一ID可以保存的唯一值。输出应该是如下所示的数据帧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 |
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]