我有一个像下面所示的dataframe
ID,F1,F2,F3,F4,F5,F6,L1,L2,L3,L4,L5,L6
1,X,,X,,,X,A,B,C
1,X,,X,,,X,A,B,C
1,X,,X,,,X,A,B,C
2,X,,,X,,X,A,B,C,D,E
3,X,X,X,,,X,A
3,X,X,X,,,X,,B,,C
3,X,X,X,,,X,,D,C
4,X,X,,,,,A,B
4,,,,X,,X,G,H,I
4,,,X,,,,T
df = pd.read_clipboard(sep=',')
我想做以下事情
a)删除完全重复项(其中每列的所有值都匹配)。 ex:ID=1(keep=first)
b)将重复项附近折叠成一行。 ex:ID=3和4。 接近重复的是只有ID匹配但其余的F numbered and L number columns differ
我正在尝试下面的方法,但它会导致错误的输出
下面的代码错过复制其他L numbered values which doesn't have NA before
df = df.drop_duplicates(keep='first') # this drops full duplicates ex:ID = 1
df.groupby(['ID'])['ID','F1','F2','F3','F4','F5','F6','L1','L2','L3','L4','L5','L6'].bfill().drop_duplicates(subset=['ID'],keep='first')
在真实数据中,有50个F列和50个L列。 对于F columns
,X的位置很重要,必须是正确的,而对于L列,它可以在任何地方,只要它被捕获,它就可以了。
我期望我的输出如下所示
<img alt="在这里输入图像描述"src="https://i.stack.imgur.com/UYQpj.png缧/>