使用iloc或ix的Pandas Dataframe Slice

时间:2017-12-06 17:03:04

标签: python-3.x pandas dataframe

我正在尝试找到一种更好的方法来分隔我的数据帧的前半部分,该数据帧具有可变数量的列。我尝试过使用iloc和ix方法,但实际上我正在为许多数据帧编写以下内容。有没有更好的方法来缩写这个?

df.iloc[:, [0,1,2,3,4,5,6,7,8,9,10,11]] #df.ix works this way as well

我想做的是......

df.iloc[:, [0:df.shape[1]/2] #this will allow column number flexibility

你们有没有想过为此做好的解决方法?

1 个答案:

答案 0 :(得分:1)

像Scott在评论中提到的那样,不要使用ix,因为它已被弃用。虽然ix目前有效,但未来可能不会使用iloc

但是,请尝试使用numpy中的array_split()。它非常易读。这会将数据帧均匀地分成两半(array_split将允许数字不均匀并返回尽可能接近一半):

import numpy as np

df_split = np.array_split(df, 2)
# This will return a list of dataframes.
# if you need single datframes you could always use df_split[0] for first half
# and df_split[1] for other half

如果您还需要拆分列,您也可以这样做:

df_split = np.array_split(df.columns, 2) # <--- Notice the df.columns in the argument
first_half = df[df_split[0].tolist()]
second_half = df[df_split[1].tolist()]