Python [[0]] 意思
Python [[0]] meaning
我是运行一个Python脚本(Kaggle脚本)。它适用于 3.4.5 virtualenv,但不适用于 3.5.2
我不确定为什么,我也不熟悉 [[0]] 语法。下面是片段。
import pandas as pd
data = pd.read_csv(r'path\train.csv')
labels_flat = data[[0]].values.ravel()
它应该从 csv 的第一列生成一个值列表。
在 3.5.2 中我得到这个错误:
KeyError: '[0] not in index'
我试图用
复制值
labels_flat = []
lf = data.values.tolist()
for row in lf:
labels_flat.append(row[0])
但我认为这不是一回事
我不认为问题出在语法上,你的 Dataframe 只是不包含你要查找的索引。
对我来说这有效:
In [1]: data = pd.DataFrame({0:[1,2,3], 1:[4,5,6], 2:[7,8,9]})
In [2]: data[[0]]
Out[2]:
0
0 1
1 2
2 3
我认为 [[0]]
语法让您感到困惑的是方括号在 python 中用于两个完全不同的事物,而 [[0]]
语句同时使用:
A. []
用于创建列表。在上面的示例中,[0]
创建了一个包含单个元素 0
.
的列表
B. []
也用于访问列表(或字典,...)中的元素。所以 data[0]
returns data
.
的第 0 个元素
下一个令人困惑的事情是,虽然通常的 python 列表是由数字索引的(例如 data[4]
是 data
的第 4 个元素),Pandas Dataframes 可以通过列表进行索引。这是一种语法糖,可以轻松地一次访问数据框的多个列。
所以在我上面的例子中,要获得列 0
和 1
你可以这样做:
In [3]: data[[0, 1]]
Out[3]:
0 1
0 1 4
1 2 5
2 3 6
此处内部 [0, 1]
创建一个包含元素 0
和 1
的列表。外部 [ ]
使用内部列表作为索引检索数据框的列。
为了提高可读性,请看这个,它完全一样:
In [4]: l = [0, 1]
In [5]: data[l]
Out[5]:
0 1
0 1 4
1 2 5
2 3 6
如果您只想要第一列(第 0
列),您会得到:
In [6]: data[[0]]
Out[6]:
0
0 1
1 2
2 3
这正是您要找的。
我是运行一个Python脚本(Kaggle脚本)。它适用于 3.4.5 virtualenv,但不适用于 3.5.2
我不确定为什么,我也不熟悉 [[0]] 语法。下面是片段。
import pandas as pd
data = pd.read_csv(r'path\train.csv')
labels_flat = data[[0]].values.ravel()
它应该从 csv 的第一列生成一个值列表。
在 3.5.2 中我得到这个错误:
KeyError: '[0] not in index'
我试图用
复制值labels_flat = []
lf = data.values.tolist()
for row in lf:
labels_flat.append(row[0])
但我认为这不是一回事
我不认为问题出在语法上,你的 Dataframe 只是不包含你要查找的索引。
对我来说这有效:
In [1]: data = pd.DataFrame({0:[1,2,3], 1:[4,5,6], 2:[7,8,9]})
In [2]: data[[0]]
Out[2]:
0
0 1
1 2
2 3
我认为 [[0]]
语法让您感到困惑的是方括号在 python 中用于两个完全不同的事物,而 [[0]]
语句同时使用:
A. []
用于创建列表。在上面的示例中,[0]
创建了一个包含单个元素 0
.
B. []
也用于访问列表(或字典,...)中的元素。所以 data[0]
returns data
.
下一个令人困惑的事情是,虽然通常的 python 列表是由数字索引的(例如 data[4]
是 data
的第 4 个元素),Pandas Dataframes 可以通过列表进行索引。这是一种语法糖,可以轻松地一次访问数据框的多个列。
所以在我上面的例子中,要获得列 0
和 1
你可以这样做:
In [3]: data[[0, 1]]
Out[3]:
0 1
0 1 4
1 2 5
2 3 6
此处内部 [0, 1]
创建一个包含元素 0
和 1
的列表。外部 [ ]
使用内部列表作为索引检索数据框的列。
为了提高可读性,请看这个,它完全一样:
In [4]: l = [0, 1]
In [5]: data[l]
Out[5]:
0 1
0 1 4
1 2 5
2 3 6
如果您只想要第一列(第 0
列),您会得到:
In [6]: data[[0]]
Out[6]:
0
0 1
1 2
2 3
这正是您要找的。