我正在尝试对数据框行进行下采样以创建较小的数据框。假设我们的数据框有几列,每列都有预定义的分类值。如何确保每个不同的分类值都有机会出现在新的重采样数据框中?
例如:
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”值。重新采样后如何确保这些值都没有丢失?
答案 0 :(得分: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])