相关疑难解决方法(0)

在组pandas数据帧中提取具有最大值的行

这里提出了一个类似的问题: Python:使用groupby获取具有最大值的行

但是,即使在该组中有多个具有最大值的记录,我每组只需要一条记录.

在下面的例子中,我需要一个"s2"记录.对我来说哪一个并不重要.

>>> df = DataFrame({'Sp':['a','b','c','d','e','f'], 'Mt':['s1', 's1', 's2','s2','s2','s3'], 'Value':[1,2,3,4,5,6], 'count':[3,2,5,10,10,6]})
>>> df
   Mt Sp  Value  count
0  s1  a      1      3
1  s1  b      2      2
2  s2  c      3      5
3  s2  d      4     10
4  s2  e      5     10
5  s3  f      6      6
>>> idx = df.groupby(['Mt'])['count'].transform(max) == df['count']
>>> df[idx]
   Mt Sp  Value  count
0  s1  a      1      3
3  s2  d      4     10
4  s2  e      5     10
5  s3  f      6 …
Run Code Online (Sandbox Code Playgroud)

python pandas

29
推荐指数
2
解决办法
3万
查看次数

pandas - 获取由另一列索引的特定列的最新值(获取由另一列索引的特定列的最大值)

我有以下数据帧:

   obj_id   data_date   value
0  4        2011-11-01  59500    
1  2        2011-10-01  35200 
2  4        2010-07-31  24860   
3  1        2009-07-28  15860
4  2        2008-10-15  200200
Run Code Online (Sandbox Code Playgroud)

我想得到这些数据的一个子集,这样我每个都只有最新的(最大的'data_date')数据.'value''obj_id'

我已经破解了一个解决方案,但感觉很脏.我想知道是否有人有更好的方法.我敢肯定我必须错过一些通过熊猫这么简单的方法.

我的方法主要是分组,排序,检索和重组,如下所示:

row_arr = []
for grp, grp_df in df.groupby('obj_id'):
    row_arr.append(dfg.sort('data_date', ascending = False)[:1].values[0])

df_new = DataFrame(row_arr, columns = ('obj_id', 'data_date', 'value'))
Run Code Online (Sandbox Code Playgroud)

python pandas

17
推荐指数
4
解决办法
1万
查看次数

Python pandas 数据框:为另一列的每个唯一值找到最大值

我有一个大数据框(从 500k 到 1M 行),其中包含例如以下 3 个数字列:ID、A、B

我想过滤结果以获得如下图所示的表格,其中,对于列 id 的每个唯一值,我有 A 和 B 的最大值和最小值。我该怎么办?

编辑:为了更清楚,我更新了下面的图片:当我从一列中获得最大值或最小值时,我还需要获得其他列的与其相关的数据

在此处输入图片说明

python grouping dataframe pandas

9
推荐指数
1
解决办法
1万
查看次数

Python:如何获得具有它们所属组的最大值的行?

我改回了我的问题.我正在寻找以下问题的解决方案:

我有一个dataFrame,如:

   Sp   Mt   Value  count
4  MM2  S4   bg     10
5  MM2  S4   dgd    1
6  MM4  S2   rd     2
7  MM4  S2   cb     8
8  MM4  S2   uyi    8
Run Code Online (Sandbox Code Playgroud)

我的目标是获得每组中所有行数最大的行,例如:

MM4  S4   bg     10
MM4  S2   cb     8
MM4  S2   uyi    8
Run Code Online (Sandbox Code Playgroud)

我按['Sp','Mt'分组

有人知道我怎么能在熊猫或python中做到这一点?

python pandas

8
推荐指数
1
解决办法
4824
查看次数

熊猫+ groupby

数据集包含4列,其中name是孩子的名字,yearofbirth表示孩子出生的年份,number表示使用该特定姓名命名的婴儿数.

   For example, entry 1 reads, in the year 1880, 7065 girl children were named Mary.
Run Code Online (Sandbox Code Playgroud)

数据集的HEAD

通过大熊猫,我试图找出每年哪个名字最常用的名字.我的代码

   df.groupby(['yearofbirth']).agg({'number':'max'}).reset_index()
Run Code Online (Sandbox Code Playgroud)

上面的代码部分回答了手头的问题.

查询结果

我想要名字和最大数字.

python data-analysis pandas pandas-groupby

6
推荐指数
1
解决办法
104
查看次数

获取pandas GroupBy中最大值对应的行

简单数据框:

df = pd.DataFrame({'A': [1,1,2,2], 'B': [0,1,2,3], 'C': ['a','b','c','d']})
df
   A  B  C
0  1  0  a
1  1  1  b
2  2  2  c
3  2  3  d
Run Code Online (Sandbox Code Playgroud)

我希望groupbyA 列的每个值 ( ) 都得到 C 列的值,B 列的值最大。例如对于A列的第1组,B列的最大值为1,所以我想要C列的值“b”:

   A  C
0  1  b
1  2  d
Run Code Online (Sandbox Code Playgroud)

无需假设 B 列已排序,性能是重中之重,其次是优雅。

python group-by dataframe pandas pandas-groupby

6
推荐指数
3
解决办法
3245
查看次数

删除连续的重复项,同时保留最大值

我试图从 X 列中删除连续的重复项,同时保留基于 Y 列的最大值的条目,不幸的是没有成功。数据框如下:

idx X
0 A 3
1 2
2 A 7
3 A 10
4 1
5 C 4
6 A 3
7 A 3

我想要实现的是:

idx X
0 A 3
1 2
3 A 10
4 1
5 C 4
7 A 3

我发现的大多数解决方案只是删除重复的内容,而不考虑任何重复的模式。

请注意,重复项可能具有相同的值。

python pandas

6
推荐指数
1
解决办法
298
查看次数

在保持价值关联的同时对熊猫进行重新取样

从这样的事情开始:

from pandas import DataFrame
time = np.array(('2015-08-01T00:00:00','2015-08-01T12:00:00'),dtype='datetime64[ns]')
heat_index = np.array([101,103])
air_temperature = np.array([96,95])

df = DataFrame({'heat_index':heat_index,'air_temperature':air_temperature},index=time)
Run Code Online (Sandbox Code Playgroud)

产生这个df:

                     air_temperature    heat_index
2015-08-01 07:00:00  96                 101
2015-08-01 19:00:00  95                 103
Run Code Online (Sandbox Code Playgroud)

然后每天重新采样:

df_daily = df.resample('24H',how='max')
Run Code Online (Sandbox Code Playgroud)

为此得到df_daily:

            air_temperature     heat_index
2015-08-01  96                  103
Run Code Online (Sandbox Code Playgroud)

因此,通过how='max'每24小时使用pandas重新采样重新采样,从每列中获取该时间段内的最大值.

但正如你所看到的看着df输出2015-08-01,当天的最大热指数(发生在19:00:00)不相关的空气温度发生在同一时间.也就是说,在空气温度为95°F时引起103°的热指数.这种关联通过重新取样而丢失,我们最终会从一天中的不同时间看到空气温度.

有没有办法只重新采样一列,并将值保留在同一索引的另一列中?所以最终结果如下:

            air_temperature     heat_index
2015-08-01  95                  103
Run Code Online (Sandbox Code Playgroud)

我的第一个猜测就是重新对该heat_index列进行重新采样......

df_daily = df.resample('24H',how={'heat_index':'max'})
Run Code Online (Sandbox Code Playgroud)

要得到...

            air_temperature
2015-08-01  103
Run Code Online (Sandbox Code Playgroud)

...然后尝试从那里做某种DataFrame.loc或DataFrame.ix,但一直没有成功.关于如何在重新采样后找到相关值的任何想法(例如,找到与air_temperature后来发现的最大值同时发生的值heat_index)?

python datetime pandas

5
推荐指数
1
解决办法
1944
查看次数

Dask:使用groupby获取组中具有最大值的行

同样的问题可以在 Pandas 中使用转换来解决,如这里所解释的 使用 dask 是我发现使用合并的唯一有效解决方案。我想知道是否还有其他方法可以实现它。

python group-by dataframe dask

5
推荐指数
1
解决办法
1981
查看次数

查找连续相似值的最大值

我有一个像这样的数据框:

               timestamp  Order     Price  Quantity
0    2019-10-09 09:15:42      0  27850.00      2040
1    2019-10-09 09:15:42      0  27850.00      1980
2    2019-10-09 09:15:53      0  27860.85      1800
3    2019-10-09 09:16:54      0  27860.85      2340
4    2019-10-09 09:18:48      0  27860.85      1500
5    2019-10-09 09:21:08      0  27979.00      1840
6    2019-10-09 09:21:08      0  27979.00      2020
7    2019-10-09 09:21:12      0  27850.00      1800
8    2019-10-09 09:21:15      0  27850.00      1580
9    2019-10-09 09:21:21     35  28000.00      1840
10   2019-10-09 09:21:23     34  28000.00      1800
11   2019-10-09 09:28:17      0  28035.00      2020
12   2019-10-09 09:28:18 …
Run Code Online (Sandbox Code Playgroud)

python dataframe python-3.x pandas

5
推荐指数
1
解决办法
169
查看次数