python - Python - 如何根据各种列对行进行条件计数?
问题描述
我想创建一个 Python 数据框,用于计算每个样本中每个日期类型C 或 P出现的次数。C 和 P 是 F 的子集,这意味着只要Type等于F,我就可以计算具有相同Sample值和相同Date值的行数。
我无法对条件进行硬编码,因为实际数据集比样本大得多。这意味着我需要将我的条件基于数据集中Type等于F的值。
这是我的数据集 df_Data 的一个示例(实际数据要大得多):
样品 | 类型 | 日期 | 罢工
A | F | 2020 年 6 月 1 日 |
一个 | C | 2020 年 6 月 1 日 | 5个
| 磷 | 2020 年 6 月 1 日 | 2.5
A | F | 2020 年 12 月 1 日 |
一个 | 磷 | 2020 年 12 月 1 日 | 3个
| 磷 | 2020 年 12 月 1 日 | 3.5
A | 磷 | 2020 年 12 月 1 日 | 4
乙 | F | 2020 年 6 月 1 日 |
乙| C | 2020 年 6 月 1 日 | 2.5
B | C | 2020 年 6 月 1 日 | 3
乙 | C | 2020 年 6 月 1 日 | 4
乙 | F | 2020 年 12 月 1 日 |
乙| C | 2020 年 12 月 1 日 | 2
乙 | C | 2020 年 12 月 1 日 | 4
乙 | 磷 | 2020 年 12 月 1 日 | 2
乙 | 磷 | 2020 年 12 月 1 日 | 4
相应的输出是一个像这样的新数据帧:
样品 | 类型 | 日期 | 数数
========================
A | F | 1 Jun 2020 |2
A | F | 1 Dec 2020 |3
B | F | 1 Jun 2020 |3
B | F | 1 Dec 2020 |4
在 Excel 中,我会使用 CountIfs 函数:
IF Type = "F" then countifs(Sample-column, Sample-value, Date-column, Date-value, Type-column, "<> F")
请帮忙(为糟糕的表格格式道歉)。
解决方案
我建议以下代码:
import pandas as pd
df = pd.read_csv('sample.csv')
df['Type']=df['Type'].apply(lambda x: 'F' if x == 'P' or 'C' else '')
adf = df.groupby(['Sample', 'Type', 'Dat`enter code here`e'],as_index=False).agg({'Strike':['count']})
此代码读sample.csv
入数据帧。然后,对列执行 lambda 查询Type
。最终结果在adf
.
推荐阅读
- python - 范围中文字符和选定字符组的正则表达式
- c# - 数据为空。无法对 Null 值调用此方法或属性 - Data.SqlTypes.SqlNullValueException
- python - 在 shell 脚本中使用最低版本的 Python
- html - 重置媒体查询的元素
- python - 如何在多变量梯度下降中找到系数?
- graalvm - JaVers 是否适用于 GraalVM 原生镜像?
- unix - 查找具有文件格式的文件
- apache - 带有自签名证书的 openssl 错误“验证错误:num=18:自签名证书”和“例程:ssl3_read_bytes:tlsv1 警报解码”
- javascript - 如何在 Vue3 中设置/删除 data() 值?
- swift - 如何在 Swift 的动态原型单元格中使用 UIPickerView 或 UIDatePicker 作为 UITextField 的 inputView