Python 如果另一列中的值为空,则 CSV 检查列中具有相同 ID 的字段

Python CSV check fields with same id in column if value is null in another column

我想检查具有特定 ID 的所有字段,如果它们的值在另一列中为空,则删除这些行。

例如在下面table,我正在检查 patientId 列中的 Id (84) 字段,如果病理学列中的所有字段都为空,那么我应该删除这些行。

谢谢!

df = pd.DataFrame({
    'id': [1,1,2,2],
    'value': [1,None,2,None]
})
df = df[~((df['id'] == 1) & df['value'].isna())]
print(df.to_markdown(index=False))
|   id |   value |
|-----:|--------:|
|    1 |       1 |
|    2 |       2 |
|    2 |     nan |

我在有 null 的地方找到了重复的字符串。我通过比较主数据框([False False True False False False False False True])获得标签。使用 ~ 应用掩码,即我显示具有相反索引的行。

import pandas as pd

df = pd.DataFrame({'patientld': [89, 84, 84, 9, 9, 84, 5, 3, 84],
                   'pathology': ['null', 'null', 'null', 'yes', 'null', 'null', 'yes', 'yes', 'null']})

a = df[(df.duplicated()) & (df['pathology'].isin(['null']))]
index = df.index.isin(a.index)
print(df[~index])

输出

   patientld pathology
0         89      null
1         84      null
3          9       yes
4          9      null
6          5       yes
7          3       yes