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

新手上路,请多包涵

我有一个数据框,我想弹出一定数量的记录,而不是我想作为百分比值传递的数字。

例如,

df.head(n=10)

从数据集中弹出前 10 条记录。我想要一个小的变化而不是 10 条记录我想从我的数据集中弹出 5% 的记录。如何在熊猫中做到这一点。

我正在寻找这样的代码,

df.head(frac=0.05)

有什么简单的方法可以得到这个吗?

原文由 Mohamed Thasin ah 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 946
2 个回答

我想弹出记录的前 5%

没有内置方法,但您可以这样做:

您可以 multiply 总行数占您的百分比,并将结果用作 head 方法的参数。

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

因此,如果您的数据框包含 1000 行和 n = 5% 您将获得第一行 50 行。

原文由 Mihai Alexandru-Ionut 发布,翻译遵循 CC BY-SA 4.0 许可协议

我已经扩展了 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):]

原文由 Julian 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题