如何串联数据框中的重复行

时间:2019-04-16 21:10:07

标签: python pandas dataframe dictionary

从原始数据来看,有重复的数据。具有不同数据库的重复项必须与前一个表的后面相结合,是否有任何方法可以通过比较数据之间的关系将两个表合并为一个表,如下所示?有什么方法可以挑选出标题相同而其他列都不同的那些

通过使用drop.duplicates和重复的原始数据,我通过掩盖不同的数据库获得了两个表,但是在其他列中进行了重复,并希望使用字典对其进行比较,但是通过在两个表中将行作为字典进行比较,则键是在每本字典中都一样,我无法将它们合并在一起。

这是给出的原始数据

  DB TITLE  ISSN  IBSN
0  M     a     1   NaN
1  M     d     1   NaN
2  M     c     1   NaN
3  N     b     1   NaN
4  N     a     1   NaN
5  N     d     1   NaN
6  O     c     1   NaN
7  O     e     1   NaN
8  O     a     1   NaN
9  O     b     1   NaN
10 M     a     2     2
11 N     a     2   NaN

通过使用drop_duplicates和重复:

>>>df1=df.drop_duplicates(['TITLE','ISSN','IBSN'])
>>>index=df.duplicated(['TITLE','ISSN','IBSN'])
>>>df2=df[index]
  DB TITLE  ISSN  IBSN             DB TITLE  ISSN  IBSN        
0  M     a     1   NaN           0  N     a     1   NaN        
1  M     d     1   NaN           1  N     d     1   NaN         
2  M     c     1   NaN           2  O     c     1   NaN       
3  M     a     2     2           3  O     a     1   NaN
4  N     a     2   NaN           4  O     b     1   NaN   
5  N     b     1   NaN           
6  O     e     1   NaN
        df1                               df2

这是我从行中获得的字典:

{'DB': 'N', 'TITLE': 'a', 'ISSN': 1, 'IBSN': 'NaN'}
{'DB': 'M', 'TITLE': 'a', 'ISSN': 1, 'IBSN': 'NaN'}

我希望输出是

    DB TITLE  ISSN  IBSN   DB TITLE  ISSN ISBN   DB TITLE  ISSN  IBSN
0    M     a   1.0   NaN    N     a   1.0  NaN    O     a   1.0   NaN
1    N     b   1.0   NaN    O     b   1.0  NaN  NaN   NaN   NaN   NaN
2    M     d   1.0   NaN    N     d   1.0  NaN  NaN   NaN   NaN   NaN
3    M     c   1.0   NaN    O     c   1.0  NaN  NaN   NaN   NaN   NaN
4    O     e   1.0   NaN  NaN   NaN   NaN  NaN  NaN   NaN   NaN   NaN
5    M     a   2.0   2.0  NaN   NaN   NaN  NaN  NaN   NaN   NaN   NaN
6    N     a   2.0   NaN  NaN   NaN   NaN  NaN  NaN   NaN   NaN   NaN 

列中“ TITLE”的顺序并不重要,但是“ DB”必须从左到右按字母顺序排序,并且null始终在最后。

0 个答案:

没有答案