【问题标题】:Find the Nth unique value and return to dataframe in Python在 Python 中查找第 N 个唯一值并返回数据框
【发布时间】:2018-06-01 14:52:58
【问题描述】:

我有以下熊猫数据框:

df1

Out 1 Out 2 Out 3 Out 4 Out 5
3     1     2     4     5
100  50    200    300   200

df1 中的值表示 df2$ID 中的第 N 个唯一值。所以第一个唯一值是 999,第三个唯一值是 777 等等。

ID  ID2
999 888
101 801
777 666
777 666
555 100
555 100
111 100

所以对于最终的 df3,我需要以下内容:注意我只更新了示例的第一行

Out 1 Out 2 Out 3 Out 4 Out 5
777   999   101   555   111
100  50    200    300   200

我已经尝试使用@Wen 的答案,但它会产生以下错误:我找不到这个答案,除此之外可能是索引错误。我还确保我将相关数据类型转换为 int32 无济于事。任何帮助将不胜感激 -

ValueError: Row labels must have same size as column labels

【问题讨论】:

  • Pandas 使用 numpy,所以你可以这样做 np.unique(df2['ID'])[df1.iloc[0,:]]
  • 谢谢你 - 我之前在代码中遇到了一个轻微的索引问题,这就是为什么我没有早点投票。效果很好!

标签: python pandas unique


【解决方案1】:

您可以drop_duplicates 和使用lookup

s=df2.drop_duplicates('ID').reset_index(drop=True)

df1.iloc[0,:]=s.lookup(df1.iloc[0,:]-1,['ID']*len(s))
df1
Out[222]: 
   Out1  Out2  Out3  Out4  Out5
0   777   999   101   555   111
1   100    50   200   300   200

【讨论】:

  • 我收到以下错误:NameError: name 'row_labels' is not defined- 这与索引有关吗? ——
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多