如果此标识符缺少,则创建值

时间:2016-01-26 14:50:01

标签: python pandas

我想解决一个基本归结为此的问题: 我有标识号(数千个),每个都应该与一组字母唯一链接。让我们通过e来称呼它们。如果有帮助,可以从另一列(y)填充这些。 偶尔其中一个字母丢失并注册为NAN。如何更换,以便获得所有必需的数字。

Idnumber    X      y
   1        a      a
   2        a      a                                                              
   1        b      b
   1        NaN    d
   2        b      NaN 
   1        d      c
   2        c      NaN
   1        NaN    e
   2        d      d
   2        e      e

任何给定的x都可能丢失。 数据集太大了,无法简单地添加所有可能性并丢弃重复数据。 想法是:

Idnumber    X
   1        a      
   2        a                                                                    
   1        b      
   1        c
   2        b       
   1        d      
   2        c      
   1        e    
   2        d 
   2        e 

主要问题是获得一个独特的解决方案。因此,确保我用c替换一个NaN,用e替换一个NaN。

1 个答案:

答案 0 :(得分:1)

这是你要找的吗?或者这会占用太多内存吗?如果确实使用了太多RAM,则可以使用read_csv中的chunksize parameter。然后将每个单独的块写入csv的结果(带有重复项和nans删除),然后加载它们并再次删除重复项 - 这次只删除跨块冲突的重复项。

#Loading Dataframe
from StringIO import StringIO
x=StringIO('''Idnumber,X,y
1,a,a
2,a,a
1,b,b
1,NaN,d
2,b,NaN
1,d,c
2,c,NaN
1,NaN,e
2,d,d
2,e,e''')

#Operations on Dataframe
df = pd.read_csv(x)
df1 = df[['Idnumber','X']]
df2 = df[['Idnumber','y']]
df2.rename(columns={'y': 'X'}, inplace=True)
pd.concat([df1,df2]).dropna().drop_duplicates()