python - 减少数据框行和查找

标签 python pandas dataframe

需要以下方面的帮助。 假设我们有一个数据框:

dictionary ={'Category':['a','a','a','a','a','a','a','a','b','b','b','b','b','b','b'], 
'val1':[11,13,14,17,18,21,22,25,2,8,9,13,15,16,19],
'val2':[1,0,5,1,4,3,5,9,4,1,5,2,4,0,3]}

df=pd.DataFrame(dictionary)

“val1”始终在“category”中的相同值内递增,即类别的第一行和最后一行是该类别的最小值和最大值。每个类别的行太多,我想创建一个新的数据框,其中包含每个类别的 minmax 值,并包含等间距的例如每个类别 5 行(包括最小值和最大值)。 我认为 numpy 的 linspace 应该用于为每个类别创建一个值数组(例如 linspace(min, max, 5)),然后类似于 excel 的“查找”功能应该用于从 df 获取最接近的“val1”值。 或者也许还有其他更好的方法......

非常感谢您的帮助。

最佳答案

这是您需要的吗?使用groupbyreindex

l=[]
for _, x in df.groupby('Category'):
    x.index=x['val1']
    y=x.reindex(np.linspace(x['val1'].min(), x['val1'].max(), 5),method='nearest')
    l.append(y)
pd.concat(l)
Out[330]: 
      Category  val1  val2
val1                      
11.00        a    11     1
14.50        a    14     5
18.00        a    18     4
21.50        a    22     5
25.00        a    25     9
2.00         b     2     4
6.25         b     8     1
10.50        b     9     5
14.75        b    15     4
19.00        b    19     3

关于python - 减少数据框行和查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50614931/

相关文章:

python - 如何获得两个 Pandas 数据帧的公共(public)索引?

python - Pandas 数据帧 : comparing values of two adjacent rows and adding a column

python - df.iloc[1].ColumnName 是否返回整行,而不是一个特定值?

python - 单个模型上的 Odoo 多个 many2many 或 One2many 字段

python - 纯 Tensorflow 中的 Gram-Schmidt 正交化 : performance for iterative solution is much slower than numpy

python - 指定要在其上运行 python 脚本的核心。系统

python - 使用 [-1] 获取列的最后一行?

python - 数据框列表对应元素的平均值

python - 当 'ID' 为 1 时,如何创建一个新列插入分组列 'interaction'(及时)的单元格值

python - : TypeError: cannot concatenate 'str' and 'list' objects mean? 是什么