修剪/截断时我错过了什么?

时间:2018-04-06 15:01:04

标签: python pandas trim

我似乎无法看到这里有什么问题。我有一个长度为Series的长尾鹦鹉(16110)和一个DataFrame的形状(13,16116)。我只是想将DataFrame修剪为Series的长度。

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

df = df[:len(series)]

此代码运行时没有错误,但似乎在缩短方面没有做太多。

我在这里错过了什么吗?

2 个答案:

答案 0 :(得分:3)

显然你想要DataFrame.head

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

请注意,这是切割原始帧。它返回原始帧的视图(子集),尽我所知。有些切片返回副本; it depends on context and is not very easy to predict

答案 1 :(得分:1)

这是另一种方法,使用SELECT TRY_CONVERT(DATETIME2, '18-04-14 04:17:48.000000000 PM', 3 ) --or 2

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