【问题标题】:How to downsample dataframe rows uniformly based on columns distinct values?如何根据列的不同值统一下采样数据帧行?
【发布时间】:2020-01-06 00:11:48
【问题描述】:

我正在尝试对数据框行进行下采样以创建更小的数据框。假设我们的数据框有几列,每列都有预定义的分类值。如何确保每个不同的分类值都有机会出现在新的重采样数据框中?

例如:
rows = [{'A':'a', 'B':'d', 'C':'g'},{'A':'a', 'B':'e', 'C':'h'},{'A':'a', 'B':'d', 'C':'g'},{'A':'c', 'B':'f', 'C':'i'},{'A':'c', 'B':'d', 'C':'g'},{'A':'b', 'B':'e', 'C':'h'}] pd.DataFrame(rows)
out put of the code

在“A”列中,我们有“a”、“b”和“c”值。如何确保重采样后没有这些值丢失?

【问题讨论】:

标签: python pandas dataframe downsampling


【解决方案1】:

你可以使用:

import numpy as np
import pandas as pd
data = pd.DataFrame({'col': np.repeat(['A', 'B', 'C'], 12),
                     'value1': np.repeat([1,0,1],12),
                     'value2': np.random.randint(20, 100, 36)})
data1 = data[data.file == np.random.choice(data['file'].unique())].reset_index(drop=True)

start_ix = np.random.choice(data1.index[:-3])

print(data.loc[start_ix:start_ix+3])

【讨论】:

  • 我不确定,但我猜df.sample(frac=1) 只会打乱数据帧的行。 df.sample() 是否对所有列的值进行统一采样?
  • 这个和df.sample()一样,不保证每个分类条目都在新的数据框中。
猜你喜欢
  • 2019-12-28
  • 2021-12-26
  • 2019-12-30
  • 1970-01-01
  • 2021-03-21
  • 1970-01-01
  • 2016-01-10
  • 2021-10-06
  • 2019-11-27
相关资源
最近更新 更多