我有以下DataFrame:
N numbers
n1 1,2,3
n2 4,6,2
n4 2,5
....
frequency=[0.45, 0.5, 0.05]
Activ = [ 1, 2, 3]
df = shuffle(df)[:20]
Activs=np.random.choice(Activ , len(df), p=frequency)
df['index']=pd.Series(Activs.tolist())
df_new = df.loc[np.repeat(df.index.values,df.index)]
我想获取以下类型的数据框:
df_new:
N numbers index
n1 1,2,3 3
n1 1,2,3 3
n2 4,6,2 2
n2 4,6,2 2
n2 4,6,2 2
n1 1,2,3 1
n4 2,5 2
....
我收到一个错误-在我的框架中有一个列值和NaN的日期值
我认为列index
不是必需的,因为np.repeat
可以使用array
Activs
:
df = pd.DataFrame({'numbers': ['1,2,3', '4,6,2', '2,5'], 'N': ['n1', 'n2', 'n4']})
print (df)
N numbers
0 n1 1,2,3
1 n2 4,6,2
2 n4 2,5
frequency=[0.45, 0.5, 0.05]
Activ = [ 1, 2, 3]
df = df[:20]
#for testing
np.random.seed(100)
Activs=np.random.choice(Activ , len(df.index), p=frequency)
print (Activs)
[2 1 1]
df_new = df.loc[np.repeat(df.index,Activs)]
print (df_new)
N numbers
0 n1 1,2,3
0 n1 1,2,3
1 n2 4,6,2
2 n4 2,5
但是,如果需要来自的新列Activs
,最好不要使用名称,index
如果不是真正必要的话-例如,名称为val
:
np.random.seed(100)
Activs=np.random.choice(Activ , len(df.index), p=frequency)
print (Activs)
[2 1 1]
df['val'] = Activs
df_new = df.loc[np.repeat(df.index,Activs)]
print (df_new)
N numbers val
0 n1 1,2,3 2
0 n1 1,2,3 2
1 n2 4,6,2 1
2 n4 2,5 1
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句