问题描述
我的数据框如下所示:
df1:
ident | A | B | C | D |
---|---|---|---|---|
1 | 2 | 1 | ||
2 | 3 | |||
3 | 1 | 2 | 1 | 5 |
4 | 4 | |||
5 | 4 | 1 | 3 | |
6 | 3 | 2 | ||
7 | 3 | |||
8 | 1 | |||
9 | 1 |
现在我需要像 df 的分析。 它应该看起来像:
df2:
名称 | just_name_sum |
---|---|
A | 3 |
B | 1 |
C | 1 |
D | 0 |
just_name_sum 列计算 df1 中除 ident 列之外的其他列中没有其他条目的列。 我怎么能算这样的东西?
谢谢
解决方法
您可以通过一个简单的 for
循环来实现:
summation = dict()
df_temp = df.drop('ident',axis=1)
for col in df_temp.columns:
summation[col] = df_temp.loc[:,df_temp.columns!=col].isna().all(axis =1).sum()
pd.DataFrame([summation]).transpose()
输出:
index | 0 |
---|---|
A | 3 |
B | 1 |
C | 1 |
D | 0 |
列表理解版:(如果你是粉丝)
pd.DataFrame([{col: df_temp.loc[:,df_temp.columns!=col].isna().all(axis =1).sum()
for col in df_temp.columns}]).transpose()