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时,是否有办法保留其他列?用正确的数据更新了我的问题。