簡體   English   中英

df['column_name'] 和 df[['column_name']] 在 pandas 中如何工作?

[英]How do df['column_name'] and df[['column_name']] work in pandas?

我知道前一個給了我一個系列,而這封信給了一個 dataframe。我無法得到它的 arguments。df df[['column_name']]給了 dataframe。這就是我發送['column_name']一個迭代作為它的data=參數? 我正在努力了解 python 在這里的工作方式:我的結果如下:

df['Yil']=
bir     2021
ikki    2020
19      2019
18      2018
17      2017
16      2016
15      2015
10      2010

df[['Yil']]=

        Yil
bir     2021
ikki    2020
19      2019
18      2018
17      2017
16      2016
15      2015
10      2010
Name: Yil, dtype: int64 

df['column_name']返回該列的系列

df[['column_name']]返回一個 DataFrame,其中有一列名為column_name

你清楚地注意到了……

與系列相比,數據框有一些不同的方法可供使用。 如果沒有更多信息,很難說出您想使用哪一個。

為了選擇 dataframe 的某些列,索引不能只是任何可迭代的。 (例如,字符串是可迭代的。)根據文檔,它必須是一個列表,盡管通過一些快速測試,其他一些可迭代對象也可以工作:

迭代器

In [2]: df = pd.DataFrame({'a': [2, 3], 'b': [4, 5], 'c': [6, 7]})

In [3]: df[['a']]
Out[3]: 
   a
0  2
1  3

In [4]: df[iter(['a'])]  # Dummy iterator
Out[4]: 
   a
0  2
1  3

In [5]: df[(x for x in ['a'])]  # Dummy generator, a kind of iterator
Out[5]: 
   a
0  2
1  3

范圍

In [6]: df1 = pd.DataFrame([['a', 'b'], ['c', 'd']])

In [7]: df1[range(1)]
Out[7]: 
   0
0  a
1  c

Dicts 和 sets 也可以工作,但它們已被棄用。


相反,元組不能用於 select 多列:

In [8]: df[('a',)]
Traceback (most recent call last):
  ...
KeyError: ('a',)

因為需要能夠進行多級列索引:

In [9]: df2 = pd.DataFrame(
   ...:    [[2, 4], [3, 5]],
   ...:    columns=pd.MultiIndex.from_tuples([('a', 'b'), ('a', 'c')]))

In [10]: df2
Out[10]: 
   a   
   b  c
0  2  4
1  3  5

In [11]: df2[('a', 'c')]
Out[11]: 
0    4
1    5
Name: (a, c), dtype: int64

暫無
暫無

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

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