我有一个 Dataframe ,我想弹出一定数量的记录,而不是数字,我想作为一个百分比值传递。例如,第一个月从数据集中弹出前10条记录。我想要一个小的变化,而不是10条记录,我想弹出第一5%的记录从我的数据集。如何在Pandas。我在找这样的密码,df.head(frac=0.05)有什么简单的方法可以得到这个吗?
df.head(frac=0.05)
kqlmhetl1#
我想把唱片的前5%没有内置方法,但您可以执行以下操作:您可以将总行数multiply为您的百分比,并将结果用作head方法的参数。
multiply
head
n = 5 df.head(int(len(df)*(n/100)))
因此,如果您的 Dataframe 包含1000行和n = 5%,您将获得前50行。
1000
n = 5%
50
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):]
ohtdti5x3#
我也遇到了同样的问题,@mihai的解决方案很有用。对于我的情况,我重新写信给:-
percentage_to_take = 5/100 rows = int(df.shape[0]*percentage_to_take) df.head(rows)
我假设对于最后一个百分比行df.tail(rows)或df.head(-rows)也可以工作。
df.tail(rows)
df.head(-rows)
uinbv5nw4#
这可能会有所帮助:
tt = tmp.groupby('id').apply(lambda x: x.head(int(len(x)*0.05))).reset_index(drop=True)
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%一个二个一个一个
5条答案
按热度按时间kqlmhetl1#
我想把唱片的前5%
没有内置方法,但您可以执行以下操作:
您可以将总行数
multiply
为您的百分比,并将结果用作head
方法的参数。因此,如果您的 Dataframe 包含
1000
行和n = 5%
,您将获得前50
行。iyfjxgzm2#
我扩展了Mihai的答案,它可能对其他人有用,目的是自动选择时间序列采样的前n个记录,这样你就可以确定你是在训练旧记录,测试最近的记录。
ohtdti5x3#
我也遇到了同样的问题,@mihai的解决方案很有用。对于我的情况,我重新写信给:-
我假设对于最后一个百分比行
df.tail(rows)
或df.head(-rows)
也可以工作。uinbv5nw4#
这可能会有所帮助:
pbossiut5#
占 Dataframe 的70%
一个二个一个一个