1 回答

TA貢獻1790條經(jīng)驗 獲得超9個贊
您可以在列中使用計數(shù)器,如果小于或等于列中的值,Cell
則添加值,然后與列的連續(xù)值指定的每個組一起使用:1
Shading
numpy.where
Series.sample
GroupBy.transform
Series
g = df['Cell'].eq(1).cumsum()
df['IsShade'] = np.where(df['Cell'].le(df['Shading']), 1, 0)
df['IsShade'] = df.groupby(g)['IsShade'].transform(lambda x: x.sample(frac=1))
print (df)
? ? Series? Parallel? Shading? Total? Cell? IsShade
0? ? ? ? 3? ? ? ? ?2? ? ? ? 2? ? ? 6? ? ?1? ? ? ? 0
1? ? ? ? 3? ? ? ? ?2? ? ? ? 2? ? ? 6? ? ?2? ? ? ? 1
2? ? ? ? 3? ? ? ? ?2? ? ? ? 2? ? ? 6? ? ?3? ? ? ? 0
3? ? ? ? 3? ? ? ? ?2? ? ? ? 2? ? ? 6? ? ?4? ? ? ? 1
4? ? ? ? 3? ? ? ? ?2? ? ? ? 2? ? ? 6? ? ?5? ? ? ? 0
5? ? ? ? 3? ? ? ? ?2? ? ? ? 2? ? ? 6? ? ?6? ? ? ? 0
6? ? ? ? 3? ? ? ? ?2? ? ? ? 2? ? ? 6? ? ?1? ? ? ? 0
7? ? ? ? 3? ? ? ? ?2? ? ? ? 2? ? ? 6? ? ?2? ? ? ? 0
8? ? ? ? 3? ? ? ? ?2? ? ? ? 2? ? ? 6? ? ?3? ? ? ? 1
9? ? ? ? 3? ? ? ? ?2? ? ? ? 2? ? ? 6? ? ?4? ? ? ? 0
10? ? ? ?3? ? ? ? ?2? ? ? ? 2? ? ? 6? ? ?5? ? ? ? 0
11? ? ? ?3? ? ? ? ?2? ? ? ? 2? ? ? 6? ? ?6? ? ? ? 1
自定義函數(shù)的另一個想法:
def f(x):
? ? size = x.iat[0]
? ? total = len(x)?
? ? a = np.concatenate([np.ones(size, dtype=int), np.zeros(total - size, dtype=int)])
? ? np.random.shuffle(a)
? ? return a
g = df['Cell'].eq(1).cumsum()
df['IsShade'] = df.groupby(g)['Shading'].transform(f)
添加回答
舉報