Python 比较dataframe的单元格,其中另一个单元格对于多个列是相同的?

Python 比较dataframe的单元格,其中另一个单元格对于多个列是相同的?,python,pandas,Python,Pandas,假设我有一个包含如下数据的熊猫数据框: item diff otherstuff 0 1 2 1 1 1 1 2 2 1 3 7 3 2 -1 0 4 2 1 3 5 2 4 9 6 2 -6

假设我有一个包含如下数据的熊猫数据框:

    item    diff   otherstuff
   0   1       2            1
   1   1       1            2
   2   1       3            7
   3   2      -1            0
   4   2       1            3
   5   2       4            9
   6   2      -6            2
   7   3       0            0
   8   3       2            9
是否可以比较具有相同项的所有行,并仅保留差异最小的项

所以这张表的结尾是:

    item   diff  otherstuff
   0   1      1           2
   1   2     -6           2
   2   3      0           0
假设我并不总是知道什么样的顺序,或者这些物品的名称


我尝试了一些非常复杂的for循环,试图获得相同的项数,然后通过索引比较并删除数据帧中除最低行以外的所有行,但这似乎不起作用。否则我怎么做呢?

为此,您可以使用
groupby

>>> df.groupby("item", as_index=False)["diff"].min()
   item  diff
0     1     1
1     2    -6
2     3     0

[3 rows x 2 columns]
这是按
项进行分组的,
因为_index=False
意味着您希望分组的输出看起来更像原始输出,
[“diff”]
选择
diff
列,
min()
表示我们需要最小值

通读文档部分可能会有所帮助,因为一旦你掌握了窍门,你可以做很多整洁的事情


[请注意,如果要在多个最小值相等的情况下保留多行,事情可能会变得稍微复杂一些,但您仍然可以将其完成。]

为此,您可以使用
groupby

>>> df.groupby("item", as_index=False)["diff"].min()
   item  diff
0     1     1
1     2    -6
2     3     0

[3 rows x 2 columns]
这是按
项进行分组的,
因为_index=False
意味着您希望分组的输出看起来更像原始输出,
[“diff”]
选择
diff
列,
min()
表示我们需要最小值

通读文档部分可能会有所帮助,因为一旦你掌握了窍门,你可以做很多整洁的事情


[请注意,如果要在多个最小值相等的情况下保留多行,事情可能会变得稍微复杂一些,但您仍然可以将其完成。]

为此,您可以使用
groupby

>>> df.groupby("item", as_index=False)["diff"].min()
   item  diff
0     1     1
1     2    -6
2     3     0

[3 rows x 2 columns]
这是按
项进行分组的,
因为_index=False
意味着您希望分组的输出看起来更像原始输出,
[“diff”]
选择
diff
列,
min()
表示我们需要最小值

通读文档部分可能会有所帮助,因为一旦你掌握了窍门,你可以做很多整洁的事情


[请注意,如果要在多个最小值相等的情况下保留多行,事情可能会变得稍微复杂一些,但您仍然可以将其完成。]

为此,您可以使用
groupby

>>> df.groupby("item", as_index=False)["diff"].min()
   item  diff
0     1     1
1     2    -6
2     3     0

[3 rows x 2 columns]
这是按
项进行分组的,
因为_index=False
意味着您希望分组的输出看起来更像原始输出,
[“diff”]
选择
diff
列,
min()
表示我们需要最小值

通读文档部分可能会有所帮助,因为一旦你掌握了窍门,你可以做很多整洁的事情


[请注意,如果要在多个最小值相等的情况下保留多行,事情可能会变得更复杂一些,但您仍然可以完成它。]

这比我尝试的要简单得多。谢谢使用groupby时,是否有办法保留其他列?用正确的数据更新了我的问题。这比我想做的要容易得多。谢谢使用groupby时,是否有办法保留其他列?用正确的数据更新了我的问题。这比我想做的要容易得多。谢谢使用groupby时,是否有办法保留其他列?用正确的数据更新了我的问题。这比我想做的要容易得多。谢谢使用groupby时,是否有办法保留其他列?用正确的数据更新了我的问题。