微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

比较来自另一列的 python pandas 中的缺失值

如何解决比较来自另一列的 python pandas 中的缺失值

我有一个 Pandas 数据框,它由两列带值组成。有些值丢失了,我想创建第三列,标记两列中是否都缺少值或是否填充了一个值。我不确定如何执行此操作,因为我是新手,如果您能提供任何帮助,我们将不胜感激

#input 
df = {'First': ['','','A','B','C'],'Second': ['12','10','11']}
df = pd.DataFrame(data = d)

#Possible output of third column
df['Third'] = ['Secondfilled','missing','bothfilled','Firstfilled',bothfilled']

解决方法

没有 ifelse 和自定义函数的单行解决方案。 改进了@SeaBean 的建议!

df1 <- df1 %>% 
  group_by(country) %>%
  mutate(tot_sales = sum(sales)) %>%
  ungroup() %>%
  slice_max(n = 2,tot_sales)

输出:

d = {0: 'Missing',1: 'FirstFilled',2: 'SecondFilled',3: 'BothFilled'}
df['Third'] = (df.ne('')*(1,2)).sum(1).map(d)
,

您可以将 apply() 与查找字典一起使用。

lookup = {'10': 'Firstfilled','01': 'Secondfilled','11': 'bothfilled','00': 'missing'}

def fill(row):
    key = '00'

    if row['First'] != '':
        key = '1' + key[1]

    if row['Second'] != '':
        key = key[0] + '1'

    return lookup[key]

df['Third'] = df.apply(fill,axis=1)
# print(df)

  First Second         Third
0           12  Secondfilled
1                    missing
2     A     10    bothfilled
3     B          Firstfilled
4     B          Firstfilled
5     C     11    bothfilled

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。