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

use*_*834 1 python pandas

您好我正在寻找一种方法来获取此数据帧df ::

  df = pd.DataFrame(dict(X=list('abbcccddef'),
                         Y=list('ABCDEFGHIJ'),
                         Z=list('1234123412')))
  df
  #    X  Y  Z
  # 0  a  A  1
  # 1  b  B  2
  # 2  b  C  3
  # 3  c  D  4
  # 4  c  E  1
  # 5  c  F  2
  # 6  d  G  3
  # 7  d  H  4
  # 8  e  I  1
  # 9  f  J  2
Run Code Online (Sandbox Code Playgroud)

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

  #    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
Run Code Online (Sandbox Code Playgroud)

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

  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
Run Code Online (Sandbox Code Playgroud)

Zer*_*ero 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
Run Code Online (Sandbox Code Playgroud)