在熊猫数据中选择多个列

在熊猫数据中选择多个列

我有不同列中的数据,但我不知道如何提取数据以保存到另一个变量中。

index  a   b   c1      2   3   42      3   4   5

如何选择'a''b'把它保存到df1?

我试过

df1 = df['a':'b']df1 = df.ix[:, 'a':'b']

似乎都没有用。


开心每一天1111
浏览 584回答 3
3回答

弑天下

列名(是字符串)不能以您尝试的方式切片。这里你有几个选择。如果从上下文中知道要分割哪些变量,则只需将列表传递给__getitem__语法([]的)df1 = df[['a','b']]或者,如果对它们进行数字索引而不是按它们的名称进行索引(假设您的代码应该在不知道前两列的名称的情况下自动完成),那么您可以这样做:df1 = df.iloc[:,0:2] # Remember that Python does not slice inclusive of the ending index.此外,您应该熟悉如何将视图转换为Pandas对象,而不是该对象的副本。上述方法中的第一个将返回一个新的副本,以存储所需的子对象(所需的切片)。然而,有时Pandas中有一些索引约定不这样做,而是给您一个新变量,它只引用与原始对象中的子对象或片相同的内存块。这将发生在第二种索引方式中,因此您可以使用copy()函数以获得常规副本。当发生这种情况时,更改您认为是切片的对象有时会更改原始对象。总是很高兴能注意到这一点。df1 = df.iloc[0,0:2].copy() # To avoid the case where changing df1 also changes df使用iloc,您需要知道列的位置(或索引)。由于列的位置可能会发生变化,所以可以使用iloc连同get_loc功能columns获取列索引的dataframe对象的方法。{df.columns.get_loc(c):c for idx, c in enumerate(df.columns)}现在,您可以使用此字典通过名称访问列,并使用iloc.

ibeautiful

假设您的列名(df.columns)是['index','a','b','c'],那么您想要的数据将出现在第3和第4列中。如果您在脚本运行时不知道它们的名称,则可以这样做newdf = df[df.columns[2:4]] # Remember, Python is 0-offset! The "3rd" entry is at slot 2.正如EMS所指出的他的回答, df.ix切片列更简洁,但是.columns切片接口可能更自然,因为它使用了普通的1-D python列表索引/切片语法。警告:'index'是一个不好的名字。DataFrame列。同样的标签也用于真实的df.index属性Index阵列。因此,您的列由df['index']返回真正的DataFrame索引。df.index..阿Index是一种特殊的Series为查找其元素的值进行了优化。对于df.index,它用于通过它们的标签查找行。那,那个df.columns属性也是pd.Index数组,用于按其标签查找列。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python