df['column_name']和df[['column_name']]如何在大熊猫中工作?



我知道前一个字母给了我一个序列,而字母给了一个数据帧。我不能理解的是它的论点。df[['column_name']]正在给出数据帧。这就是我发送['column_name']作为其data=参数的迭代的原因吗?我很纠结蟒蛇在这里是怎么工作的!我的结果如下:

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,该DataFrame有一列名为column_name

你清楚地注意到了。。。

与系列相比,数据帧有一些不同的方法。如果没有更多的信息,很难判断你想使用哪一个。

对于选择数据帧的某些列,索引不能只是任何可迭代的。(例如,字符串是可迭代的。(根据文档,它必须是列表,尽管通过一些快速测试,其他一些可迭代的内容也可以:

迭代

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

字典和集合也可以,但它们已被弃用。


相反,元组不能用于选择多列:

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

最新更新