python列表 元组索引,获取其中某一行 某一列的方式

对于列表和元组,若想获取其中的一列,不能使用下面的索引方式,这种只有数组才能用:

# 给定一个列表和元组
a = [[1,2,3],[2,3,4],[5,8,9]]  # 列表a
b = ([1,2,3],[2,3,4],[5,8,9])  # 元组b

获取列表中第二列的索引错误使用方式:

a[:,1]  # 把这个里面的值认成了元组
报错:
Traceback (most recent call last):
  File "/home/linux/anaconda3/lib/python3.8/site-packages/IPython/core/interactiveshell.py", line 3437, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-4-140fc7631e6a>", line 1, in <module>
    a[:,1]
TypeError: list indices must be integers or slices, not tuple

获取列表中某一行和切片的正确使用方式:

a[2]  # 读取列表中的一行
Out[17]: [5, 8, 9]
a[1:2]
Out[18]: [[2, 3, 4]]
a[0:2]
Out[19]: [[1, 2, 3], [2, 3, 4]]

列表可以存放不同类型的数据,因此列表中每个元素的大小可以相同,也可以不同,也就不支持一次性读取一列,即使是对于标准的二维数字列表,也需使用类似如下的循环读取列:

aa =[x[0] for x in a]  # 用于读取列表中的一列
aa
Out[21]: [1, 2, 5]

元组索引错误使用方式:

b[:,1]
报错:
Traceback (most recent call last):
  File "/home/linux/anaconda3/lib/python3.8/site-packages/IPython/core/interactiveshell.py", line 3437, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-11-140fc7631e6a>", line 1, in <module>
    a[:,1]
TypeError: tuple indices must be integers or slices, not tuple

正确使用方式:

b[1:2]
Out[14]: ([2, 3, 4],)
b[2]
Out[15]: [5, 8, 9]

参考链接1:CSDN

Python提供了一个内置的函数`pd.MultiIndex.from_tuples`,可以用来将元组列表转换为多重索引对象。 多重索引是指DataFrame或Series中具有多个层级的索引。多重索引可以理解为在行索引或者列索引的基础上再添加一层索引。它可以帮助我们更方便地处理和分析具有多维数据的情况。 使用`pd.MultiIndex.from_tuples`函数,我们可以将元组列表转换为多重索引对象。该函数接受一个元组列表作为参数,每个元组代表一个多重索引的层级。每个元组中的元素表示该层级上的索引值。 以下是一个示例: ```python import pandas as pd data = [('A', 1), ('A', 2), ('B', 1), ('B', 2)] index = pd.MultiIndex.from_tuples(data, names=['Level_1', 'Level_2']) # 创建一个包含二维数据的DataFrame df = pd.DataFrame({'Value': [10, 20, 30, 40]}, index=index) print(df) ``` 输出结果为: ``` Value Level_1 Level_2 A 1 10 2 20 B 1 30 2 40 ``` 在以上示例中,我们首先创建了一个元组列表`data`,每个元组代表一个多重索引的层级。然后使用`pd.MultiIndex.from_tuples`函数将元组列表转换为多重索引对象,并指定了各个层级的名称。最后,我们可以使用多重索引对象作为DataFrame的索引,创建一个包含二维数据的DataFrame。 需要注意的是,多重索引可以具有多个层级,每个层级可以有不同的名称。同时,多重索引也可以分别作用于行索引和列索引,用于处理不同粒度的数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值