在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)]
它确实有效,但感觉非常混乱,更不用说强制注入了。
我想知道是否有更简洁的方法来选择数据帧的百分比,因为到目前为止我在文档中找不到任何有用的命令。
答案 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)