为什么在进行转换时会自动省略重复值?

时间:2017-11-16 23:13:32

标签: python pandas

我有以下字典:

dict_1={'AB':50,'ACC':20,'CEKK':75,'AB':25,'CEKK':75,'BBA':58,'BBA':58 }

当我把它变成df时:

pd.DataFrame(data=list(dict_1.values()),index=list(dict_1.keys()),columns=['number'])

它只提供字典中的每个键一次。

            number
 ACC         20
  AB         25
CEKK         75
 BBA         58

所需的输出是df,所有值都包括重复的值。

            number
 ACC         20
  AB         25
CEKK         75
 BBA         58
  AB         50
CEKK         75
 BBA         58

有没有一种可行的方法可以让数据框包含重复的值而不会明确地说明数据和索引的值?

1 个答案:

答案 0 :(得分:2)

Python字典消除了之前的所有重复项到达Pandas。

In [466]: dict_1={'AB':50,'ACC':20,'CEKK':75,'AB':25,'CEKK':75,'BBA':58,'BBA':58 }

In [467]: dict_1
Out[467]: {'AB': 25, 'ACC': 20, 'BBA': 58, 'CEKK': 75}

解决方法:

In [465]: pd.DataFrame({'number':[20, 25, 75, 58, 50, 75, 58]}, 
                       index=['ACC', 'AB', 'CEKK', 'BBA', 'AB', 'CEKK', 'BBA'])
Out[465]:
      number
ACC       20
AB        25
CEKK      75
BBA       58
AB        50
CEKK      75
BBA       58

更新:这就是具有重复键的词典所发生的事情:

In [79]: print({'AB':50,'ACC':20,'CEKK':75,'AB':25,'CEKK':75,'BBA':58,'BBA':58 })
{'AB': 25, 'ACC': 20, 'CEKK': 75, 'BBA': 58}
将它传递给pd.DataFrame()构造函数时,

将完全相同。因此pd.DataFrame()会收到字典没有重复字词。