簡體   English   中英

Python Pandas - 在一個命令中從數據框中刪除多個系列

[英]Python Pandas - Deleting multiple series from a data frame in one command

簡而言之......我有一個Python Pandas數據框,使用'read_table'從Excel文件讀入。 我想從數據中保留一小部分系列,並清除其余部分。 我知道我可以使用'del data ['SeriesName']'逐個刪除我不想要的東西,但我寧願做的是指定要保留的內容而不是指定要刪除的內容。

如果最簡單的答案是將現有數據幀復制到僅包含我想要的系列的新數據框中,然后完整地刪除現有框架,我會滿意這個解決方案......但如果這確實是最好的方式,有人可以帶我走過嗎?

TIA ......我是Pandas的新手。 :)

您可以使用DataFrame drop函數刪除列。 您必須傳遞axis=1選項才能處理列而不是行。 請注意,它返回一個副本,因此您必須將結果分配給新的DataFrame

In [1]: from pandas import *

In [2]: df = DataFrame(dict(x=[0,0,1,0,1], y=[1,0,1,1,0], z=[0,0,1,0,1]))

In [3]: df
Out[3]:
   x  y  z
0  0  1  0
1  0  0  0
2  1  1  1
3  0  1  0
4  1  0  1

In [4]: df = df.drop(['x','y'], axis=1)

In [5]: df
Out[5]:
   z
0  0
1  0
2  1
3  0
4  1

基本上和Zelazny7的答案一樣 - 只需指定要保留的內容:

In [68]: df
Out[68]: 
   x  y  z
0  0  1  0
1  0  0  0
2  1  1  1
3  0  1  0
4  1  0  1

In [70]: df = df[['x','z']]                                                                

In [71]: df
Out[71]: 
   x  z
0  0  0
1  0  0
2  1  1
3  0  0
4  1  1

*編輯*

您可以通過索引/切片到Dataframe.columns對象來指定大量列。
type(pandas.Index)此對象可以被視為列標簽的dict (具有一些擴展功能)。

請參閱以上示例的此擴展:

In [4]: df.columns
Out[4]: Index([x, y, z], dtype=object)

In [5]: df[df.columns[1:]]
Out[5]: 
   y  z
0  1  0
1  0  0
2  1  1
3  1  0
4  0  1

In [7]: df.drop(df.columns[1:], axis=1)
Out[7]: 
   x
0  0
1  0
2  1
3  0
4  1

您也可以指定列的列表,以保持與usecols在選項pandas.read_table 這也加快了加載過程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM