繁体   English   中英

Python Pandas:计算一个数据框中的值出现在另一个数据框中的次数,在多个条件下进行归档

[英]Python Pandas: Counting how many times value from one data frame appears in another dataframe, filering on multiple conditions

我有个问题。 我正在尝试从 df1 中计算值的次数:

Record
v:12:14
v:14:18
v:15:19

出现在 df2 中,当 df2 在多个条件下被过滤时:

df2:
Patient Test    Treatment   Record
1   A   15  v:12:14
2   A   30  v:14:18
3   C   15  v:15:19
4   C   20  v:15:19
1   B   15  v:12:14
2   B   15  v:14:18
3   A   20  v:12:14
4   B   30  v:15:19

基本上以这样的矩阵结尾:

Patient Record  A:15    A:30    C:15    C:20    B:15    A:20    B:30
1   v:12:14 1   0   0   0   1   1   0
2   v:14:18 0   1   0   0   1   0   0
3   v:15:19 0   0   1   1   0   0   1
4   v:15:19 0   0   1   1   0   0   1
3   v:12:14 1   0   0   0   1   1   0

有没有人有任何想法? 我现在通过迭代两个数据帧来做,但我觉得它可以做得更快更好。

在此先感谢您的帮助!

您可以使用数据透视表执行此操作:

matrix = df2.pivot_table(
    index=['Patient', 'Record'],
    columns=['Test', 'Treatment'],
    aggfunc='size',
).fillna(0).astype(int)

输出:

Test             A        B     C   
Treatment       15 20 30 15 30 15 20
Patient Record                      
1       v:12:14  1  0  0  1  0  0  0
2       v:14:18  0  0  1  1  0  0  0
3       v:12:14  0  1  0  0  0  0  0
        v:15:19  0  0  0  0  0  1  0
4       v:15:19  0  0  0  0  1  0  1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM