如何从df中选择列a和b,并将它们保存到新的数据帧df1中?
index a b c
1 2 3 4
2 3 4 5
尝试失败:
df1 = df['a':'b']
df1 = df.ix[:, 'a':'b']
如何从df中选择列a和b,并将它们保存到新的数据帧df1中?
index a b c
1 2 3 4
2 3 4 5
尝试失败:
df1 = df['a':'b']
df1 = df.ix[:, 'a':'b']
当前回答
我发现这种方法非常有用:
# iloc[row slicing, column slicing]
surveys_df.iloc [0:3, 1:4]
更多详情请点击此处。
其他回答
您可以使用pandas.DataFrame.filter方法对列进行筛选或重新排序,如下所示:
df1 = df.filter(['a', 'b'])
这在链接方法时也非常有用。
您可以提供要删除的列的列表,并使用Pandas DataFrame上的drop()函数仅返回所需的列。
只是说说而已
colsToDrop = ['a']
df.drop(colsToDrop, axis=1)
将返回仅包含列b和c的DataFrame。
此处记录了drop方法。
要选择多个列,请提取并查看它们:df是先前命名的数据帧。然后创建一个新的数据帧df1,并选择要提取和查看的列a到D。
df1 = pd.DataFrame(data_frame, columns=['Column A', 'Column B', 'Column C', 'Column D'])
df1
将显示所有必需的列!
假设你的列名(df.columns)是['index','a','b','c'],那么你想要的数据就在第三列和第四列。如果脚本运行时不知道它们的名称,可以执行以下操作
newdf = df[df.columns[2:4]] # Remember, Python is zero-offset! The "third" entry is at slot two.
正如EMS在回答中所指出的,df.ix对列进行了更简洁的切片,但.columns切片接口可能更自然,因为它使用了普通的一维Python列表索引/切片语法。
警告:“index”是DataFrame列的错误名称。同一标签也用于实际df.index属性,即index数组。因此,您的列由df['index']返回,而真正的DataFrame索引由df.index返回。index是一种特殊的系列,优化用于查找其元素值。对于df.index,它用于按标签查找行。df.columns属性也是一个pd.Index数组,用于按标签查找列。
df[['a', 'b']] # Select all rows of 'a' and 'b'column
df.loc[0:10, ['a', 'b']] # Index 0 to 10 select column 'a' and 'b'
df.loc[0:10, 'a':'b'] # Index 0 to 10 select column 'a' to 'b'
df.iloc[0:10, 3:5] # Index 0 to 10 and column 3 to 5
df.iloc[3, 3:5] # Index 3 of column 3 to 5