V P*_*V P 1 python random dataframe pandas
我有一个约 3700 行的数据集,需要根据列删除其中 1628 行。数据集如下所示:
compliance day0 day1 day2 day3 day4
True 1 3 9 8 8
False 7 4 8 3 2
True 4 5 0 3 5
True 5 3 9 6 2
Run Code Online (Sandbox Code Playgroud)
对于 1068 行,如果compliance=true,我想删除整行。
问题是,我想随机地这样做;我不想删除前 1063 行。我试过这个:
for z in range(1629):
rand = random.randint(0,(3783-z)) #subtract z since dataframe shape is shrinking
if str(data.iloc[rand,1]) == 'True':
data = data.drop(balanced_dataset.index[rand])
Run Code Online (Sandbox Code Playgroud)
但在删除几行后,我收到以下错误:
'labels [2359] not contained in axis'
Run Code Online (Sandbox Code Playgroud)
我也尝试过这个:
data.drop(data("adherence.str.startswith('T').values").sample(frac=.4).index)
Run Code Online (Sandbox Code Playgroud)
frac 现在是任意选择的,我只是想让它起作用。我收到以下错误:
'DataFrame' object is not callable
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激!谢谢
sample与以下一起使用drop:
n = 1068
# Do this first if you haven't already.
# df.compliance = df.compliance.map(pd.eval)
df_dropped = df.drop(df[df.compliance].sample(n=n).index)
Run Code Online (Sandbox Code Playgroud)
为此,n需要严格小于过滤后的 DataFrame。
随机删除两行的示例。
df.drop(df[df.compliance].sample(n=2).index)
compliance day0 day1 day2 day3 day4
1 False 7 4 8 3 2
3 True 5 3 9 6 2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5194 次 |
| 最近记录: |