我有一个已合并在一起的数据集,以相互填充缺失值。
问题是我有一些缺少数据的列,现在我要用不丢失的值填充。
输入的合并数据集如下所示:
Name State ID Number_x Number_y Op_x Op_y
Johnson AL 1 1 nan 1956 nan
Johnson AL 1 nan nan 1956 nan
Johnson AL 2 1 nan 1999 nan
Johnson AL 2 0 nan 1999 nan
Debra AK 1A 0 nan 2000 nan
Debra AK 1B nan 20 nan 1997
Debra AK 2 nan 10 nan 2009
Debra AK 3 nan 1 nan 2008
.
.
我想要的输出是这样的:
Name State ID Number_x Number_y Op_x Op_y
Johnson AL 1 1 1 1956 1956
Johnson AL 2 1 1 1999 1999
Johnson AL 2 0 0 1999 1999
Debra AK 1A 0 0 2000 2000
Debra AK 1B 20 20 1997 1997
Debra AK 2 10 10 2009 2009
Debra AK 3 1 1 2008 2008
.
.
因此,我希望将所有nan
值替换为其列中的关联值-将Number_x
与Number_y
匹配,将Op_x
与Op_y
匹配
要注意的一件事是,当有两个相同的ID( ID)时,它们的值有时会有所不同;像Johnson
和ID = 2
一样,它们具有不同的数字但具有相同的op值。我想保留这些,因为我需要对其进行更多的调查。
此外,如果该行的Number_x
和Number_y
缺少两个值,我想将该行删除-像Johnson
和Number_x
和Number_y
缺少为nan
值。
答案 0 :(得分:2)
让我们用groupby
来axis =1
df.groupby(df.columns.str.split('_').str[0],1).first().dropna(subset=['Number','Op'])
ID Name Number Op State
0 1 Johnson 1.0 1956.0 AL
2 2 Johnson 1.0 1999.0 AL
3 2 Johnson 0.0 1999.0 AL
4 1A Debra 0.0 2000.0 AK
5 1B Debra 20.0 1997.0 AK
6 2 Debra 10.0 2009.0 AK
7 3 Debra 1.0 2008.0 AK