【问题标题】:Pandas combines values from two columns and compare for uniquenessPandas 结合两列的值并比较唯一性
【发布时间】:2016-04-25 08:22:09
【问题描述】:

我想组合/连接数据框两列中的值并比较这些值的唯一性,例如

      col1    col2
row1  val11   val12
row2  val21   val22
row3  val31   val32

我想连接val11val12val21val22val31val32,然后比较val11+val12val21+val22val31+val32的唯一性,即。如果三个连接的值相等。

col1col2中的dtype都是str

我想知道最好的方法是什么。

【问题讨论】:

  • 这里的数据类型是什么?请定义唯一性,你的意思是col1 == col2吗?
  • @EdChum 我已修改操作以指定 dtype 和唯一性。

标签: python-3.x pandas dataframe


【解决方案1】:

您可以使用duplicated 来检查连接列col1col2boolean indexing 的唯一性:

print df
       col1   col2
row1  val11  val12
row2  val21  val22
row3  val31  val32
row3  val31  val32

ser = df.col1 + df.col2
print ser
row1    val11val12
row2    val21val22
row3    val31val32
row3    val31val32

print ser.duplicated(keep=False)
dtype: object
row1    False
row2    False
row3     True
row3     True

print ~ser.duplicated(keep=False)
row1     True
row2     True
row3    False
row3    False
dtype: bool

print df[~ser.duplicated(keep=False)]
       col1   col2
row1  val11  val12
row2  val21  val22

【讨论】:

  • 谢谢代码,我想知道Pandas中这个连接操作的名称是什么
  • sum的字符串列,不知道有没有特殊的名字。
  • 如果我需要为每一行检索~ser.duplicated(keep=False) 的布尔值,该怎么做?
  • 你可以使用df['bool'] = ~ser.duplicated(keep=False)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-30
  • 2015-07-19
  • 2017-04-03
相关资源
最近更新 更多