我试图通过应用特定的标准来对数据帧中条目的顺序进行伪随机
我在这里找到了一条非常有用的线索:thread。为了提供一些背景信息,让我们假设我有一个如下的数据帧:
data2 = [['fire', "a", "1"], ['smoke', "b", "1"], ['honeybee', "a", "2"], ['curtain', "c", "2"]]
df2 = pd.DataFrame(data2, columns = ['item', 'label1', "label2"])
我希望每次数据帧都随机重新排序,这样label1
和label2
在下一行中都不会重复
例如,这并不好,因为label1
是可以的,但在label2
中有两个连续的2
:
item label1 label2
fire a 1
curtain c 2
honey a 2
smoke b 1
为了实现这一点,我运行以下代码:
import pandas as pd
randomized = False
while not randomized:
exp_df_2 = df2.sample(frac=1).reset_index(drop=True) #df2 is the original dataframe
# check for repeats
for i in range(0, len(exp_df_2)):
try:
if i == len(exp_df_2) - 1:
randomized = True
elif exp_df_2['label1'][i] != exp_df_2['label1'][i+1] and exp_df_2['label2'][i] != exp_df_2['label2'][i+1]:
continue
elif exp_df_2['label1'][i] == exp_df_2['label1'][i+1] or exp_df_2['label2'][i] == exp_df_2['label2'][i+1]:
break
except IndexError:
pass
它似乎工作得很好,但我想知道它是否有一些不必要的影响。是吗
一旦我确信这段代码正在做我想做的事情,我想问一件事: 我怎样才能在限制上更加宽松
例如,如果我想为label2
允许最大值两个连续的相同值,而保持对label1
的限制不变,该怎么办
目前没有回答
相关问题 更多 >
编程相关推荐