從熊貓數據框中選擇單個列(如df.iloc[:, 0]
,df['A']
或df.A
等)時,生成的向量會自動轉換爲Series而不是單列數據幀。但是,我正在編寫一些將DataFrame作爲輸入參數的函數。因此,我更喜歡處理單列DataFrame而不是Series,以便該函數可以假設可以訪問df.columns。現在我必須使用類似pd.DataFrame(df.iloc[:, 0])
的方式將Series明確轉換爲DataFrame。這似乎不是最乾淨的方法。有沒有更好的方法直接從DataFrame進行索引,以便結果是單列DataFrame而不是Series?Python熊貓:將選定的列保留爲DataFrame而不是系列
回答
由於@Jeff提到有幾個方法可以做到這一點,但我建議使用LOC/ILOC更明確的(和早期引發錯誤,如果你嘗試一些曖昧):
In [10]: df = pd.DataFrame([[1, 2], [3, 4]], columns=['A', 'B'])
In [11]: df
Out[11]:
A B
0 1 2
1 3 4
In [12]: df[['A']]
In [13]: df[[0]]
In [14]: df.loc[:, ['A']]
In [15]: df.iloc[:, [0]]
Out[12-15]: # they all return the same thing:
A
0 1
1 3
後兩個在整數列名稱的情況下選擇刪除歧義(正是爲什麼創建loc/iloc)。例如:
In [16]: df = pd.DataFrame([[1, 2], [3, 4]], columns=['A', 0])
In [17]: df
Out[17]:
A 0
0 1 2
1 3 4
In [18]: df[[0]] # ambiguous
Out[18]:
A
0 1
1 3
抱歉打擾你,但這只是一個非常快速的問題。我看到額外的'[]'如何使結果成爲'DataFrame'而不是'Series',但pandas文檔中的這種索引語法是在哪裏討論的?我只是想獲得這種索引技術的「官方」名稱,以便我真正理解它。謝謝! –
@sparc_spread http://pandas.pydata.org/pandas-docs/stable/indexing.html#basics「您可以將列的列表傳遞給[]以按照該順序選擇列。」我不確定這是否有名字! –
是的,它看起來沒有 - 但我會從現在開始繼續使用它。令人驚訝的是API和文檔都埋藏了多少東西。謝謝! –
- 1. python,如何將熊貓系列轉換爲熊貓DataFrame?
- 2. 熊貓合併保留列名的重複DataFrame列
- 3. 熊貓DataFrame reset_index列?
- 4. Python熊貓。使用Series創建DataFrame不會保留dtype
- 5. 爲熊貓DataFrame中的每列指定數據類型 - Python
- 6. Python:陣列(矩陣)到熊貓DataFrame
- 7. 熊貓DataFrame - 將系列字符串分成多列
- 8. 熊貓格式 - 如何將DataFrame float64列(與NaNs)保存爲int?
- 9. 熊貓DataFrame列表奇怪的行爲
- 10. 將熊貓系列添加到數據框中,保留索引
- 11. 熊貓DataFrame列連接
- 12. 熊貓dataframe groupby兩列
- 13. 轉換列表熊貓DataFrame
- 14. 熊貓Dataframe列值拆分
- 15. 熊貓DataFrame移調多列
- 16. 將列表的列表轉換爲熊貓DataFrame
- 17. 熊貓Dataframe - RemoteDataError - Python
- 18. 熊貓dataframe刪除恆定列
- 19. 從熊貓系列選擇特定值
- 20. 保留列順序 - Python熊貓和列Concat
- 21. 熊貓:系列爲String
- 22. 強制熊貓保留多列同名
- 23. 作爲字符串導入熊貓dataframe列不是int
- 24. 不要將HTML處理爲Markdown,而是保留定義列表
- 25. 熊貓DataFrame拼接結果成爲系列
- 26. 將熊貓數據框行映射爲熊貓系列
- 27. 熊貓:在選定列
- 28. 在熊貓系列
- 29. Python的大熊貓 - GROUPBY和均值,但保留列名
- 30. Python熊貓,創建空DataFrame指定列dtypes
df.iloc [:,[0]]或df [['A']]; df.A只會回饋一系列 – Jeff