当前位置: 首页 > 知识库问答 >
问题:

如何根据数据帧和numpy中的协变量对观测值进行分类?

莫宝
2023-03-14

我有一个包含n个观测值的数据集,比如说2个变量X1和X2。我试图根据(X1,X2)值的一组条件对每个观察结果进行分类。例如,数据集看起来像

df:
Index     X1    X2
1         0.2   0.8
2         0.6   0.2
3         0.2   0.1
4         0.9   0.3

组的定义

  • 第1组:X1

我想生成以下数据帧。

expected result:
Index     X1    X2    Group
1         0.2   0.8   1
2         0.6   0.2   4
3         0.2   0.1   3
4         0.9   0.3   4

另外,对于此类问题,使用numpy阵列是否更好/更快?

共有2个答案

时仰岳
2023-03-14

类似的东西

df[['X1','X2']].gt(0.5).astype(str).sum(1).map({'FalseTrue':1,'TrueFalse':4,'FalseFalse':3,'TrueTrue':2})
Out[56]: 
0    1
1    4
2    3
3    4
dtype: int64
米楚青
2023-03-14

在回答你的最后一个问题时,我肯定认为pandas是一个很好的工具;这可以在numpy中完成,但熊猫在处理数据帧时可以说更直观,并且速度足够快,适用于大多数应用程序pandasnumpy也能很好地一起玩。例如,在您的示例中,可以使用numpy。选择以构建您的列:

import numpy as np
import pandas as pd
# Lay out your conditions
conditions =  [((df.X1 < 0.5) & (df.X2>=0.5)),
               ((df.X1>=0.5) & (df.X2>=0.5)),
               ((df.X1<0.5) & (df.X2<0.5)),
               ((df.X1>=0.5) & (df.X2<0.5))]

# Name the resulting groups (in the same order as the conditions)
choicelist = [1,2,3,4]

df['group']= np.select(conditions, choicelist, default=-1)

# Above, I've the default to -1, but change as you see fit
# if none of your conditions are met, then it that row would be classified as -1

>>> df
   Index   X1   X2  group
0      1  0.2  0.8      1
1      2  0.6  0.2      4
2      3  0.2  0.1      3
3      4  0.9  0.3      4
 类似资料:
  • 问题内容: 我有一张像这样的表: SQL或蜂巢中是否有一种方法可以将其转换为类似表的形式: 我不确定有没有一个词来描述这种操作…任何帮助将不胜感激! 问题答案: 这基本上是一个。您没有指定要使用的RDBMS,但是可以使用聚合函数和语句在任何数据库中获取结果: 参见带有演示的SQL Fiddle 结果:

  • 如何根据Pandas中某个列中的值从中选择行? 在SQL中,我将使用: 我试图查看熊猫的文档,但我没有立即找到答案。

  • 我试图查看熊猫的文档,但我没有立即找到答案。

  • 我正在编写一个Python脚本来从我的数码相机导入图片,并且我正在使用Pandas来帮助记账传入的图像。我正在使用EXIF数据为单个图像标记信息,例如相机型号、图像模式、图像格式和相机获取图像的时间戳。这些数据用于将图像分离到目录结构中。我正在努力解决的是如何使用Pandas根据一组时间戳对图像进行分组,例如,这些时间戳都在彼此相隔半小时之内。举个例子,假设我有六张照片,其中三张是在相隔9分钟内拍

  • 目前,我有一个名为的,看起来像这样,其中几何体表示一个点(纬度、经度)。 给定另一个点(lat,long),我想找到从这个数据框到那个特定点的最近点。我用距离函数计算了最近的点 现在我有一个系列,看起来像这样 我怎样才能得到一个Geodataframe的副本,它按相同的顺序排序,如下所示?谢谢

  • 我有3个数据帧。第一数据帧(例如df1)具有多行和多列。第二和第三数据帧(例如df2和df3)仅具有来自DF1的一行和列的子集。df2和df3中的列名相同。所以我要做的是将df1中的每一行与df2和DF3中的单行进行比较。如果来自df1的单元格的值与df2的单元格内容匹配,则将df1中单元格的值替换为1;如果来自df1的单元格的值与df3匹配,则将df1中单元格的值替换为2;如果df2的单元格内容