Python Pandas-过滤pandas数据框以获取一行中具有最小值的行,而另一行中的每个唯一值

德克索里特

这是我正在使用的DF的虚拟示例(“ ETC”代表几列):

df = pd.DataFrame(data={'PlotCode':['A','A','A','A','B','B','B','C','C'],
                        'INVYR':[2000,2000,2000,2005,1990,2000,1990,2005,2001],
                        'ETC':['a','b','c','d','e','f','g','h','i']})

df的图片(对不起,信誉不足)

这就是我想要的最终结果:

df1 = pd.DataFrame(data={'PlotCode':['A','A','A','B','B','C'],
                        'INVYR':[2000,2000,2000,1990,1990,2001],
                        'ETC':['a','b','c','e','g','i']})

df1的图片

注意:我希望所有行的每个“ PlotCode”具有最小的“ INVYR”值,而不仅仅是一个,否则我假设我可以使用drop_duplicates和sort做些简单的事情。

到目前为止,按照此处的答案,在for循环中生成的追加pandas数据帧,我已经尝试使用以下代码进行此操作:

df1 = []

for i in df['PlotCode'].unique():
    j = df[df['PlotCode']==i]
    k = j[j['INVYR']==j['INVYR'].min()]
    df1.append(k)

df1 = pd.concat(df1)

该代码有效,但速度很慢,我的实际数据包含大约40,000个不同的PlotCode,因此这不是可行的解决方案。有人知道这样做的某种平滑过滤方式吗?我觉得我缺少一些非常简单的东西。

先感谢您!

桑德·范·登·奥尔德

使用熊猫时,请尽量不要使用for循环,与熊猫的矢量化操作相比,它们的运行速度非常慢。

解决方案1:
使用.groupby()确定每个绘图代码的最小INVYR

min_invyr_per_plotcode = df.groupby('PlotCode', as_index=False)['INVYR'].min()

并使用pd.merge()在原始df与您刚刚发现的最小值之间进行内部联接

result_df = pd.merge(
    df, 
    min_invyr_per_plotcode, 
    how='inner', 
    on=['PlotCode', 'INVYR'],
)

解决方案2:

同样,确定每组的最小值,但现在将其作为一列添加到数据框。每组的最小值通过使用.groupby()。transform()添加到每一行

df['min_per_group'] = (df
    .groupby('PlotCode')['INVYR']
    .transform('min')
)

现在,过滤您的数据框,其中连续INVYR等于该组的最小值:

df[df['INVYR'] == df['min_per_group']]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python Pandas:在数据框的每一行中计算特定值的频率吗?

来自分类Dev

Python Pandas:在数据框的每一行中计算特定值的频率吗?

来自分类Dev

Python Pandas:如果groupby中任何前面的行中的值满足特定条件,则从数据框中删除一行

来自分类Dev

Python Pandas:一个数据框中的列的行值变成另一数据框中的列

来自分类Dev

Python Pandas Fillna仅具有特定值的一行

来自分类Dev

将多个值合并到一个新列中的一行 Pandas Python

来自分类Dev

根据pandas/python中的前一行值修改行值

来自分类Dev

遍历pandas数据框,从另一行中的数据更新值,然后删除另一行

来自分类Dev

如何获得 python pandas 数据框中的最后一行?

来自分类Dev

Python Pandas:将行值重用到另一行-跨行查找

来自分类Dev

Python Pandas Dataframe存储下一行值

来自分类Dev

用于从Python Pandas的第一行计算值的函数

来自分类Dev

Python pandas数据框,检查列值是否与每一行的其他列值匹配

来自分类Dev

Python:pandas使用参数动态填充每一行中的字符串值

来自分类Dev

Python使用Pandas从同一行中的两个值的条件生成新列

来自分类Dev

Python / Pandas从DataFrames中过滤出唯一的行

来自分类Dev

如何在Pandas DataFrame中获得最小值不为零的第一行索引?

来自分类Dev

Python Pandas,检查一行中某些列的条件?

来自分类Dev

在创建基于前一行的值和Python Pandas的另一列的下一行的值时,如何应用屏蔽?

来自分类Dev

获取上一行的值并计算新列pandas python

来自分类Dev

在第一列相同的所有行中找到Pandas,Python中的最小值,最大值,平均值

来自分类Dev

Python / CSV唯一行,列中每行具有唯一值

来自分类Dev

根据一列的最小值和最大值恢复所有行-Python Pandas

来自分类Dev

如何在Pandas中为每个唯一行值删除重复项?

来自分类Dev

使用Python如何在Pandas数据框中的每一行的范围内生成随机数?

来自分类Dev

pandas从数据框中删除每个字段具有非空白值的行(Python 3.4 / IPython)

来自分类Dev

具有来自其他数据框(pandas、python)的唯一值的数据框

来自分类Dev

python pandas如果A列中为1,则在同一行中使用B列的值

来自分类Dev

在Pandas Python的每一行中应用函数时发生数据转换错误

Related 相关文章

  1. 1

    Python Pandas:在数据框的每一行中计算特定值的频率吗?

  2. 2

    Python Pandas:在数据框的每一行中计算特定值的频率吗?

  3. 3

    Python Pandas:如果groupby中任何前面的行中的值满足特定条件,则从数据框中删除一行

  4. 4

    Python Pandas:一个数据框中的列的行值变成另一数据框中的列

  5. 5

    Python Pandas Fillna仅具有特定值的一行

  6. 6

    将多个值合并到一个新列中的一行 Pandas Python

  7. 7

    根据pandas/python中的前一行值修改行值

  8. 8

    遍历pandas数据框,从另一行中的数据更新值,然后删除另一行

  9. 9

    如何获得 python pandas 数据框中的最后一行?

  10. 10

    Python Pandas:将行值重用到另一行-跨行查找

  11. 11

    Python Pandas Dataframe存储下一行值

  12. 12

    用于从Python Pandas的第一行计算值的函数

  13. 13

    Python pandas数据框,检查列值是否与每一行的其他列值匹配

  14. 14

    Python:pandas使用参数动态填充每一行中的字符串值

  15. 15

    Python使用Pandas从同一行中的两个值的条件生成新列

  16. 16

    Python / Pandas从DataFrames中过滤出唯一的行

  17. 17

    如何在Pandas DataFrame中获得最小值不为零的第一行索引?

  18. 18

    Python Pandas,检查一行中某些列的条件?

  19. 19

    在创建基于前一行的值和Python Pandas的另一列的下一行的值时,如何应用屏蔽?

  20. 20

    获取上一行的值并计算新列pandas python

  21. 21

    在第一列相同的所有行中找到Pandas,Python中的最小值,最大值,平均值

  22. 22

    Python / CSV唯一行,列中每行具有唯一值

  23. 23

    根据一列的最小值和最大值恢复所有行-Python Pandas

  24. 24

    如何在Pandas中为每个唯一行值删除重复项?

  25. 25

    使用Python如何在Pandas数据框中的每一行的范围内生成随机数?

  26. 26

    pandas从数据框中删除每个字段具有非空白值的行(Python 3.4 / IPython)

  27. 27

    具有来自其他数据框(pandas、python)的唯一值的数据框

  28. 28

    python pandas如果A列中为1,则在同一行中使用B列的值

  29. 29

    在Pandas Python的每一行中应用函数时发生数据转换错误

热门标签

归档