Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 删除熊猫系列中的行和清理索引_Python_Pandas_Series - Fatal编程技术网

Python 删除熊猫系列中的行和清理索引

Python 删除熊猫系列中的行和清理索引,python,pandas,series,Python,Pandas,Series,我有一个熊猫系列,基于一个随机数,我想选择一行(下面代码示例中的5行)并删除该行。删除该行时,我希望为其余行(0到8)创建一个新索引。代码如下: print 'Original series: ', sample_mean_series print 'Length of original series', len(sample_mean_series) sample_mean_series = sample_mean_series.drop([5],axis=0) print 'Series w

我有一个熊猫系列,基于一个随机数,我想选择一行(下面代码示例中的5行)并删除该行。删除该行时,我希望为其余行(0到8)创建一个新索引。代码如下:

print 'Original series: ', sample_mean_series
print 'Length of original series', len(sample_mean_series)
sample_mean_series = sample_mean_series.drop([5],axis=0)
print 'Series with item 5 dropped: ', sample_mean_series
print 'Length of modified series:', len(sample_mean_series)
print sample_mean_series.reindex(range(len(sample_mean_series)))
这是输出:

Original series:  
0    0.000074
1   -0.000067
2    0.000076
3   -0.000017
4   -0.000038
5   -0.000051
6    0.000125
7   -0.000108
8   -0.000009
9   -0.000052
Length of original series 10
Series with item 5 dropped:  
0    0.000074
1   -0.000067
2    0.000076
3   -0.000017
4   -0.000038
6    0.000125
7   -0.000108
8   -0.000009
9   -0.000052
Length of modified series: 9
0    0.000074
1   -0.000067
2    0.000076
3   -0.000017
4   -0.000038
5         NaN
6    0.000125
7   -0.000108
8   -0.000009
我的问题是第8行被删除了。我想删除行“5NaN”并保留-0.000052,索引为0到8。这就是我希望它看起来的样子:

0    0.000074
1   -0.000067
2    0.000076
3   -0.000017
4   -0.000038
5    0.000125
6   -0.000108
7   -0.000009
8   -0.000052

有些令人困惑的是,
reindex
并不意味着“创建新索引”。要创建一个新索引,只需指定
索引
属性。因此,在最后一步,只需执行
sample\u-mean\u-series.index=range(len(sample\u-mean\u-series))

以下是一条直线:

In [1]: s
Out[1]:
0   -0.942184
1    0.397485
2   -0.656745
3    1.415797
4    1.123858
5   -1.890870
6    0.401715
7   -0.193306
8   -1.018140
9    0.262998
我使用
Series.drop
方法删除第5行,然后使用
reset_index
对索引重新编号,使其连续。如果不使用
reset_index
,索引将从4跳到6,而不使用5

默认情况下,
reset_index
将原始索引移动到
DataFrame
中,并将其与序列值一起返回。传递
drop=True
可防止发生这种情况

In [2]: s2 = s.drop([5]).reset_index(drop=True)

In [3]: s2
Out[3]:
0   -0.942184
1    0.397485
2   -0.656745
3    1.415797
4    1.123858
5    0.401715
6   -0.193306
7   -1.018140
8    0.262998
Name: 0

要删除数据帧中的行并清理索引,请执行以下操作:

b = df['amount'] > 10000
df_dropped = df.drop(df[~b].index).reset_index()

谢谢你的简洁明了的回答!然而,我对阿赫登的例子中发生的事情感到困惑。重新编制的索引是否表示“创建一个索引中没有空白的新系列,其中任何缺失的索引都用NaN值填充”?这似乎是正在发生的事情,但这似乎很疯狂。另外,如果指数是a,b,c,e而不是0,1,2,4,这会起作用吗?@MikeWilliamson:是的,基本上就是这样。使用
reindex[blah]
只选择行,基本上就像执行
df.ix[blah]
一样,如果您请求的行不存在,它会给出NaN。它确实有一些填写NAN的选项,但我从未真正理解reindex的意义,更不用说它的名称了。实际上,有一种重置索引方法可以自动为您的行编号。您能解释一下您的答案吗?我解释了我的答案,并更新了它,使其更清晰。