如何选择pandas数据帧中的行百分比

时间:2018-05-31 08:10:32

标签: python pandas dataframe

在python中,我有一些结构如下的数据框:

0 0 0 0
1 1 1 1
2 2 2 2
. . . .
n n n n

如何选择中间33%的行(由索引而不是值确定)?

以下是我的尝试:

df.iloc[int(len(df)*0.33):int(len(df)*0.66)]

它确实有效,但感觉非常混乱,更不用说强制注入了。

我想知道是否有更简洁的方法来选择数据帧的百分比,因为到目前为止我在文档中找不到任何有用的命令。

5 个答案:

答案 0 :(得分:1)

您还可以在索引上使用numpy百分位函数。当索引不从零开始时,此方法也有效。

df[(df.index>np.percentile(df.index, 33)) & (df.index<=np.percentile(df.index, 66))]

答案 1 :(得分:0)

要做到这一点,你需要“玩”数字并定义你想要的索引:

<Window x:Class="Sessie_Afmeld_Applicatie.ProgressBar"
         WindowStartupLocation="CenterScreen" ResizeMode="CanMinimize"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:Sessie_Afmeld_Applicatie"
        mc:Ignorable="d"
        Title="Voortgang" Height="100" Width="300">
    <Grid>
        <ProgressBar Minimum="0" Maximum="150" Name="pbStatus"  Margin="25,23,37,23" Foreground="#FF13B931" ValueChanged="pbStatus_ValueChanged"   />
        <Label Content="Label" HorizontalAlignment="Left" Margin="125,66,0,0" VerticalAlignment="Top"/>
    </Grid>
</Window>

C:\Program Files (x86)\Graphviz2.38\bin\dot.exe" -Tpng sampleTest.dot > sampletest.png.....

在这些示例中,我定义了一个间隔,即df.iloc[(len(df)// 3) : (len(df) - len(df)// 3), :] ,它将数据帧的行减少到表的1/3和2/3之间。

答案 2 :(得分:0)

写一个函数来完成你的任务,即

def get_middle(df,percent):

    start = int(len(df)*percent)
    end = len(df) - start

    return df.iloc[start:end]

get_middle(df,0.33)

答案 3 :(得分:-1)

将数据拆分为70:30并尝试

HashMap

答案 4 :(得分:-1)

如果您正在处理现实生活中的数据。并且说你想在 0.01% 上工作(这已经足够了)。然后使用 Pandas 来完成您的工作。

Dataframe.sample(frac=0.01)