在 pandas 数据框中选择随机行
choose random rows in pandas datafram
我有一个这样的数据框;
ID code
333_c_132 x
333_c_132 n06
333_c_132 n36
333_c_132 n60
333_c_132 n72
333_c_132 n84
333_c_132 n96
333_c_132 n108
333_c_132 n120
999_c_133 x
999_c_133 n06
999_c_133 n12
999_c_133 n24
998_c_134 x
998_c_134 n06
998_c_134 n12
998_c_134 n18
998_c_134 n36
997_c_135 x
997_c_135 n06
997_c_135 n12
997_c_135 n24
997_c_135 n36
996_c_136 x
996_c_136 n06
996_c_136 n12
996_c_136 n18
996_c_136 n24
996_c_136 n36
995_c_137 x
我必须在 code
列的两个 x
之间选择 one
随机行。 IE。
例如,可能的组合是;
333_c_132 n06
999_c_133 n12
998_c_134 n18
997_c_135 n36
996_c_136 n18
如何在 pandas 中实现此目的?
我们可以使用 cumsum
为 groupby
创建子项并使用 sample
s=df[df.code.ne('x')].groupby(df.code.eq('x').cumsum()).apply(lambda x : x.sample(1))
s=s.reset_index(level=0, drop=True)
s
ID code
1 333_c_132 n06
12 999_c_133 n24
17 998_c_134 n36
20 997_c_135 n12
27 996_c_136 n24
我有一个这样的数据框;
ID code
333_c_132 x
333_c_132 n06
333_c_132 n36
333_c_132 n60
333_c_132 n72
333_c_132 n84
333_c_132 n96
333_c_132 n108
333_c_132 n120
999_c_133 x
999_c_133 n06
999_c_133 n12
999_c_133 n24
998_c_134 x
998_c_134 n06
998_c_134 n12
998_c_134 n18
998_c_134 n36
997_c_135 x
997_c_135 n06
997_c_135 n12
997_c_135 n24
997_c_135 n36
996_c_136 x
996_c_136 n06
996_c_136 n12
996_c_136 n18
996_c_136 n24
996_c_136 n36
995_c_137 x
我必须在 code
列的两个 x
之间选择 one
随机行。 IE。
例如,可能的组合是;
333_c_132 n06
999_c_133 n12
998_c_134 n18
997_c_135 n36
996_c_136 n18
如何在 pandas 中实现此目的?
我们可以使用 cumsum
为 groupby
创建子项并使用 sample
s=df[df.code.ne('x')].groupby(df.code.eq('x').cumsum()).apply(lambda x : x.sample(1))
s=s.reset_index(level=0, drop=True)
s
ID code
1 333_c_132 n06
12 999_c_133 n24
17 998_c_134 n36
20 997_c_135 n12
27 996_c_136 n24