获取具有重复值与一列的行的第一个版本

时间:2015-05-19 16:01:41

标签: python pandas

您好我正在寻找一种从此数据框中获取的方法 df ::

  #    X  Y  Z
  # 0  a  A  1
  # 1  b  B  2
  # 3  c  D  4
  # 6  d  G  3
  # 8  e  I  1
  # 9  f  J  2

每个X值只有第一行,所以这一行::

  x_unique = df.X.unique()
  x_unique
  # array(['a', 'b', 'c', 'd', 'e', 'f'], dtype=object)

  res = df[df.X == x_unique[0]].iloc[0]
  for u in x_unique[1:]:
      res = pd.concat([res, df[df.X==u].iloc[0]], axis=1)

  res
  #    0  1  3  6  8  9
  # X  a  b  c  d  e  f
  # Y  A  B  D  G  I  J
  # Z  1  2  4  3  1  2

  res = res.transpose()
  res
  #    X  Y  Z
  # 0  a  A  1
  # 1  b  B  2
  # 3  c  D  4
  # 6  d  G  3
  # 8  e  I  1
  # 9  f  J  2

我正在寻找一种比这更优雅的方式::

/browser-sync/socket.io

2 个答案:

答案 0 :(得分:5)

您可以在drop_duplicates()

上使用X方法
In [60]: df.drop_duplicates('X')
Out[60]:
   X  Y  Z
0  a  A  1
1  b  B  2
3  c  D  4
6  d  G  3
8  e  I  1
9  f  J  2

答案 1 :(得分:1)

你也可以这样做:

In [3]: import pandas as pd

In [4]: df = pd.DataFrame(dict(X=list('abbcccddef'),
                  Y=list('ABCDEFGHIJ'),
                   Z=list('1234123412')))

In [5]: df.groupby('X').first()
Out[5]: 
   Y  Z
X      
a  A  1
b  B  2
c  D  4
d  G  3
e  I  1
f  J  2