Python如何用组的模态值填充字符串值

2024-09-27 23:28:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个如下的数据集。我想能够填充缺失的文本与什么是正常的群体。我试过使用ffil,但这对那些一开始就空白的人没有帮助,而bfil对结束也没有帮助。我该怎么做?你知道吗

Group  Name
1      Annie
2      NaN
3      NaN
4      David
1      NaN
2      Bertha
3      Chris
4      NaN

期望输出:

Group  Name
    1      Annie
    2      Bertha
    3      Chris
    4      David
    1      Annie
    2      Bertha
    3      Chris
    4      David

Tags: 数据name文本groupnan空白chris群体
2条回答

使用collections.Counter按组创建模式映射:

from collections import Counter

s = df.dropna(subset=['Name'])\
      .groupby('Group')['Name']\
      .apply(lambda x: Counter(x).most_common()[0][0])

df['Name'] = df['Name'].fillna(df['Group'].map(s))

print(df)

   Group    Name
0      1   Annie
1      2  Bertha
2      3   Chris
3      4   David
4      1   Annie
5      2  Bertha
6      3   Chris
7      4   David

您可以使用value_countshead

s = df.groupby('Group')['Name'].apply(lambda x: x.value_counts().head(1)).reset_index(-1)['level_1']
df['Name'] = df['Name'].fillna(df['Group'].map(s))
print(df)

输出:

   Group    Name
0      1   Annie
1      2  Bertha
2      3   Chris
3      4   David
4      1   Annie
5      2  Bertha
6      3   Chris
7      4   David

相关问题 更多 >

    热门问题