获取我的数据框列的唯一值作为新数据框的最快方法

时间:2018-07-09 20:42:28

标签: python pandas

像这样的最佳方式是什么?

| col1 | col2 | ... col400
|  tes | abc  |      max
|  tes | onet |      ups

对此:

Index | col | unique
  1   | col1| tes
  2   | col2| abc
  3   | col2| onet
  ...    
  639 | col400| max
  649 | col400| ups

1 个答案:

答案 0 :(得分:2)

我认为您将不得不添加一个额外的索引,因为否则在每一列上,您只能添加一个行。

您可能正在寻找DataFrame.unstack(..)。例如:

>>> df = pd.DataFrame([['tes', 'abc', 'max'], ['tes', 'onet', 'ups']], columns=["col1", "col2", "col400"])
>>> df
  col1  col2 col400
0  tes   abc    max
1  tes  onet    ups
>>> df.unstack()
col1    0     tes
        1     tes
col2    0     abc
        1    onet
col400  0     max
        1     ups
dtype: object

可能与.reset_index()结合使用以引入具有唯一ID的索引和两列:一列用于“ 原始行号”,一列用于“ 列名称”,例如:

>>> df.unstack().reset_index()
  level_0  level_1     0
0    col1        0   tes
1    col1        1   tes
2    col2        0   abc
3    col2        1  onet
4  col400        0   max
5  col400        1   ups

df = (df.unstack()
      .reset_index(level=0)
      .rename(columns={'level_0':'col',0:'unique'})
      .reset_index(drop=True))

df.index += 1
print(df)

#      col unique
#1    col1    tes
#2    col1    tes
#3    col2    abc
#4    col2   onet
#5  col400    max
#6  col400    ups