如果缺少列值,则将增量值替换为pandas数据框中的值 [英] Replace by incremental values into a pandas data-frame if a column value is missing

查看:55
本文介绍了如果缺少列值,则将增量值替换为pandas数据框中的值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

输入数据框:

max_value = 16
x_max = max_value
data = {

's_id' :['G1','','','','G2','G3','G3','G4','','','']    

}
df2 = pd.DataFrame.from_dict(data)
df2
Out[365]: 
   s_id
0    G1
1      
2      
3      
4    G2
5    G3
6    G3
7    G4
8      
9      
10     

输出数据框:

    data = {

's_id' :['G1','G17','G18','G19','G2','G3','G3','G4','G20','G21','G22']    

}
df3 = pd.DataFrame.from_dict(data)
df3

Out[366]: 
   s_id
0    G1
1   G17
2   G18
3   G19
4    G2
5    G3
6    G3
7    G4
8   G20
9   G21
10  G22

我尝试了以下操作: df2 ['s_id'] = df2 ['s_id'].mask(df2 ['s_id'].eq(''))

I tried the following: df2['s_id'] = df2['s_id'].mask(df2['s_id'].eq(''))

s = df2[df2['s_id'].isna()].drop_duplicates()

TypeError:不可散列的类型:列表"

TypeError: unhashable type: 'list'

d = {v: f'G{k}' for k, v in enumerate(s, x_max + 1)}
print (d)

如何实现输出数据帧,如果值为空S_ID,则将其替换为外部变量的最大值.检查s_id列的值替换为外部变量的增量值.例如:在G1之后的s_id列中,必须为G17,即max_value +1,

How do I achieve the output data-frame, replace the values if it's empty S_ID with the max values from external variable. Check the values of s_id column replace with an incremental values from external variable. for eg: In s_id column after G1, It has to be G17 ie max_value +1,

推荐答案

创建的想法list具有与range相同的大小(如空值数量),并使用

Idea is create list with same size like number of empty values with range and set values by mask to column with DataFrame.loc:

df2 = pd.DataFrame.from_dict(data)

m = df2['s_id'].eq('')
v = [f'G{x}' for x in range(x_max+1, x_max + m.sum()+1)]
print (v)
['G17', 'G18', 'G19', 'G20', 'G21', 'G22']

df2.loc[m, 's_id'] = v
print (df2)
   s_id
0    G1
1   G17
2   G18
3   G19
4    G2
5    G3
6    G3
7    G4
8   G20
9   G21
10  G22

@Jon Clements的解决方案,谢谢:

Solution from @Jon Clements, thank you:

df2['s_id'] = df2['s_id'].apply(lambda v, c=itertools.count(x_max + 1): v or f'G{next(c)}')

这篇关于如果缺少列值,则将增量值替换为pandas数据框中的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆