【问题标题】:Splitting a pandas dataframe into two subsets将熊猫数据框拆分为两个子集
【发布时间】:2021-10-19 23:03:56
【问题描述】:

我正在尝试制作基于特征向量将 pandas 数据帧划分为两个子集的函数。

我的数据框由两列组成,其中包含一个 ndarray[10000] 这是我的特征向量和一个表示向量标签的整数。

问题只是检查特征向量的索引是否 >= 1

我已经尝试过这种方法,它确实有效,但是对于我的用例来说它会变慢。

def partition( dataset, question):
  true_rows, false_rows =[],[]
  for row in dataset.iterrows():
    if question.match(row[1][0]): 
        true_rows.append(row[1])
    else:
        false_rows.append(row[1])
  return pd.DataFrame.from_dict(true_rows), pd.DataFrame.from_dict(false_rows)

我找到了一种我认为可能有效的方法,但是当我调用 g.get_group() 时出现以下错误

TypeError: unhashable type: 'numpy.ndarray

特征向量和问题向量之间的np.Dot应该和match做同样的工作

def partition(dataset, question):
  df = dataset

  # making a mask dataframe with label True or False
  mask = df.apply(lambda x: np.dot(x[0], question.vector)>= 1)
  df['mask'] = mask

  g = df.groupby('mask')

  true_rows = g.get_group(True)
  false_rows = g.get_group

如果我能找到一种方法让它给我组中的行,这似乎应该可行。

【问题讨论】:

标签: python pandas dataframe numpy partitioning


【解决方案1】:

好的,我想通了。出于某种原因,当我的列具有默认名称(数字)时,它不起作用。

df = df.rename(columns={0:'vector', 1:'label'})

对我发送的数据集执行此操作,并且有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-08
    • 2013-06-23
    • 2019-10-26
    相关资源
    最近更新 更多