簡體   English   中英

如何獲得熊貓的第n列?

[英]How to get every nth column in pandas?

我有一個看起來像這樣的數據框:

    a1    b1    c1    a2    b2    c2    a3    ...
x   1.2   1.3   1.2   ...   ...   ...   ...
y   1.4   1.2   ...   ...   ...   ...   ...
z   ...

我想要的是按第n列分組。 換句話說,我想要一個全為as的數據框,一個為bs,一個為cs

    a1     a2     a4
x   1.2    ...    ...
y
z

在另一個SO問題中,我看到可以執行df.iloc[::5,:] ,例如,獲取每5個原始數據。 我當然可以用df.iloc[:,::3]來獲取c cols,但是對於獲取a和b卻不起作用。

有任何想法嗎?

切片列:

df[df.columns[::2]]

獲取第n列

例:

In [2]:
cols = ['a1','b1','c1','a2','b2','c2','a3']
df = pd.DataFrame(columns=cols)
df

Out[2]:
Empty DataFrame
Columns: [a1, b1, c1, a2, b2, c2, a3]
Index: []

In [3]:
df[df.columns[::3]]
Out[3]:

Empty DataFrame
Columns: [a1, a2, a3]
Index: []

您也可以使用startswith過濾:

In [5]:
a = df.columns[df.columns.str.startswith('a')]
df[a]

Out[5]:
Empty DataFrame
Columns: [a1, a2, a3]
Index: []

並對b col和c col等執行相同操作。

您可以使用以下命令獲取一組所有唯一的col前綴:

In [19]:
df.columns.str.extract(r'([a-zA-Z])').unique()

Out[19]:
array(['a', 'b', 'c'], dtype=object)

然后,您可以使用這些值使用startswith過濾列

以下應該工作:

df.ix[:, ::2] - get every second column, beginning with first (here all a's)
df.ix[:, 1::2] - get every second column, beginning with second (b's)
....

我只是在尋找解決同一問題的解決方案,從而解決了該問題。

在當前版本(0.24)中,這有效:

獲取“ a”列:

df.iloc[:, ::3]

獲得您的“ b”列:

df.iloc[:, 1::3]

獲取您的“ c”列:

df.iloc[:, 2::3]

暫無
暫無

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

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