Pandas -根据百分比获取前n行

kulphzqa  于 2023-01-11  发布在  其他
关注(0)|答案(5)|浏览(163)

我有一个 Dataframe ,我想弹出一定数量的记录,而不是数字,我想作为一个百分比值传递。
例如,
第一个月
从数据集中弹出前10条记录。我想要一个小的变化,而不是10条记录,我想弹出第一5%的记录从我的数据集。如何在Pandas。
我在找这样的密码,
df.head(frac=0.05)
有什么简单的方法可以得到这个吗?

kqlmhetl

kqlmhetl1#

我想把唱片的前5%
没有内置方法,但您可以执行以下操作:
您可以将总行数multiply为您的百分比,并将结果用作head方法的参数。

n = 5
df.head(int(len(df)*(n/100)))

因此,如果您的 Dataframe 包含1000行和n = 5%,您将获得前50行。

iyfjxgzm

iyfjxgzm2#

我扩展了Mihai的答案,它可能对其他人有用,目的是自动选择时间序列采样的前n个记录,这样你就可以确定你是在训练旧记录,测试最近的记录。

# having 
# import pandas as pd 
# df = pd.DataFrame... 

def sample_first_prows(data, perc=0.7):
    import pandas as pd
    return data.head(int(len(data)*(perc)))

train = sample_first_prows(df)
test = df.iloc[max(train.index):]
ohtdti5x

ohtdti5x3#

我也遇到了同样的问题,@mihai的解决方案很有用。对于我的情况,我重新写信给:-

percentage_to_take = 5/100
    rows = int(df.shape[0]*percentage_to_take)
    df.head(rows)

我假设对于最后一个百分比行df.tail(rows)df.head(-rows)也可以工作。

uinbv5nw

uinbv5nw4#

这可能会有所帮助:

tt  = tmp.groupby('id').apply(lambda x: x.head(int(len(x)*0.05))).reset_index(drop=True)
pbossiut

pbossiut5#

df=pd.DataFrame(np.random.randn(10,2))
print(df)
0         1
0  0.375727 -1.297127
1 -0.676528  0.301175
2 -2.236334  0.154765
3 -0.127439  0.415495
4  1.399427 -1.244539
5 -0.884309 -0.108502
6 -0.884931  2.089305
7  0.075599  0.404521
8  1.836577 -0.762597
9  0.294883  0.540444

占 Dataframe 的70%
一个二个一个一个

相关问题