Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.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_Trim - Fatal编程技术网

Python 修剪/截断时我是否遗漏了什么?

Python 修剪/截断时我是否遗漏了什么?,python,pandas,trim,Python,Pandas,Trim,我似乎看不出这里出了什么问题。我有一个熊猫系列的长度(16110)和一个数据框的形状(1316116)。我只是想把数据框修剪成我的系列的长度 我认为这将是一个简单的问题: df = df[:len(series)] 这段代码运行时没有错误,但在缩短时间方面似乎做得不多 我是不是遗漏了什么?显然是你想要的 这是一种方便的方法;基本上head(self,n)返回self.iloc[:n] 请注意,这不是切割原始框架。据我所知,它返回原始帧的视图(子集)。某些类型的切片返回副本 显然是你想要的 这是

我似乎看不出这里出了什么问题。我有一个熊猫
系列
的长度(16110)和一个
数据框
的形状(1316116)。我只是想把
数据框
修剪成我的
系列
的长度

我认为这将是一个简单的问题:

df = df[:len(series)]
这段代码运行时没有错误,但在缩短时间方面似乎做得不多

我是不是遗漏了什么?

显然是你想要的

这是一种方便的方法;基本上
head(self,n)
返回
self.iloc[:n]

请注意,这不是切割原始框架。据我所知,它返回原始帧的视图(子集)。某些类型的切片返回副本

显然是你想要的

这是一种方便的方法;基本上
head(self,n)
返回
self.iloc[:n]


请注意,这不是切割原始框架。据我所知,它返回原始帧的视图(子集)。某些类型的切片返回副本

这里是另一种方法,使用
df.truncate

df = df.truncate(after=len(series)-1)
例如:

>>> df
          0         1         2         3         4
0 -0.615868  0.367161  0.138472 -0.353085  0.953871
1  0.063501 -0.256693  0.895870  0.368182  0.156447
2 -0.148034 -0.572105 -3.030083  1.092318 -2.635359
3 -1.038899  1.198679  2.633639 -0.149085 -1.574603
4 -2.639766  1.377038 -1.263696 -1.999058 -1.540654
5  1.683478 -0.403260 -1.551362 -0.007200  0.240715
6  1.033099  0.659052 -0.306415  0.086918 -1.523796
7 -1.514313  0.117010  0.490440  0.497393  0.123755
8  0.078399  0.218355 -0.255076 -0.474265 -0.430907
9  0.868665  1.917818  1.303568  1.772729 -0.446849

>>> series
0    0.311083
1    0.498019
2   -0.671698
dtype: float64

>>> df.truncate(after=len(series)-1)
          0         1         2         3         4
0 -0.615868  0.367161  0.138472 -0.353085  0.953871
1  0.063501 -0.256693  0.895870  0.368182  0.156447
2 -0.148034 -0.572105 -3.030083  1.092318 -2.635359
不过,请注意,我不能重现你的问题。例如:

df[:len(series)]
还返回截断的
df

>>> df[:len(series)]
          0         1         2         3         4
0 -0.615868  0.367161  0.138472 -0.353085  0.953871
1  0.063501 -0.256693  0.895870  0.368182  0.156447
2 -0.148034 -0.572105 -3.030083  1.092318 -2.635359

下面是另一种方法,使用
df.truncate

df = df.truncate(after=len(series)-1)
例如:

>>> df
          0         1         2         3         4
0 -0.615868  0.367161  0.138472 -0.353085  0.953871
1  0.063501 -0.256693  0.895870  0.368182  0.156447
2 -0.148034 -0.572105 -3.030083  1.092318 -2.635359
3 -1.038899  1.198679  2.633639 -0.149085 -1.574603
4 -2.639766  1.377038 -1.263696 -1.999058 -1.540654
5  1.683478 -0.403260 -1.551362 -0.007200  0.240715
6  1.033099  0.659052 -0.306415  0.086918 -1.523796
7 -1.514313  0.117010  0.490440  0.497393  0.123755
8  0.078399  0.218355 -0.255076 -0.474265 -0.430907
9  0.868665  1.917818  1.303568  1.772729 -0.446849

>>> series
0    0.311083
1    0.498019
2   -0.671698
dtype: float64

>>> df.truncate(after=len(series)-1)
          0         1         2         3         4
0 -0.615868  0.367161  0.138472 -0.353085  0.953871
1  0.063501 -0.256693  0.895870  0.368182  0.156447
2 -0.148034 -0.572105 -3.030083  1.092318 -2.635359
不过,请注意,我不能重现你的问题。例如:

df[:len(series)]
还返回截断的
df

>>> df[:len(series)]
          0         1         2         3         4
0 -0.615868  0.367161  0.138472 -0.353085  0.953871
1  0.063501 -0.256693  0.895870  0.368182  0.156447
2 -0.148034 -0.572105 -3.030083  1.092318 -2.635359

有道理,所以我正在扩展它。这也不会让询问者得到他们想要的东西…@RCA:我认为任何基于
iloc
的东西实际上都不会剪切帧。但是,对常规Python列表进行切片也不会将其切掉,因此
foo=bar[:bound]
的预期行为是“提供较短的表示”,而不是“释放未使用的部分”。您的较长答案是有意义的。此答案与提供的输入不兼容。df的形状是(1316116)-我们是针对列而不是行进行切片。用提供的输入解决这个问题的方法是
df.iloc[:,:len(series)]
,所以我正在扩展它。这也不会让询问者得到他们想要的东西…@RCA:我认为任何基于
iloc
的东西实际上都不会剪切帧。但是,对常规Python列表进行切片也不会将其切掉,因此
foo=bar[:bound]
的预期行为是“提供较短的表示”,而不是“释放未使用的部分”。您的较长答案是有意义的。此答案与提供的输入不兼容。df的形状是(1316116)-我们是针对列而不是行进行切片。用提供的输入解决这个问题的方法是
df.iloc[:,:len(series)]
df.loc[:,:len(series)]
df.loc[:,:len(series)]
也许可以检查df,shape,我认为切片列是关键,而不是行我不确定我是否理解。另外,从一个
df
的形状
(10,5)
和一系列
len
3开始,我使用
df[:len(series)]
(参见编辑的帖子)得到了一个被截断的
df
(3,5),因此它似乎是在调整行而不是列。。。也许我遗漏了一些东西…也许检查df,形状,我认为柱的切片是关键,而不是行我不确定我是否理解。另外,从一个
df
的形状
(10,5)
和一系列
len
3开始,我使用
df[:len(series)]
(参见编辑的帖子)得到了一个被截断的
df
(3,5),因此它似乎是在调整行而不是列。。。也许我错过了什么。。。