我有一个清单
L=[[1, 2, 3, 0, 3, 8], [4, 5, 6, 0, 3, 8], [7, 8, 9, 0, 3, 8]]
另一个清单
col=[0,2,3]
和一个空列表M = []
。
col
列表包含L
列的列索引,必须将其复制到M
。
因此M
应为[[1,3,0],[4,6,0],[7,9,0]]
。
我怎么能这样做?
我希望M
作为数据框。
答案 0 :(得分:6)
>>> L=[[1, 2, 3, 0, 3, 8], [4, 5, 6, 0, 3, 8], [7, 8, 9, 0, 3, 8]]
>>> col=[0,2,3]
>>> M = [[nums[i] for i in col] for nums in L]
>>> M
[[1, 3, 0], [4, 6, 0], [7, 9, 0]]
答案 1 :(得分:2)
使用numpy,您可以使用列表作为列表索引:
>>> import numpy as np
>>> L=np.array([[1, 2, 3, 0, 3, 8], [4, 5, 6, 0, 3, 8], [7, 8, 9, 0, 3, 8]])
>>> col=[0,2,3]
>>> M = [row[col] for row in L]
>>> M
[array([1, 3, 0]), array([4, 6, 0]), array([7, 9, 0])]
>>> M = [list(row[col]) for row in L]
>>> M
[[1, 3, 0], [4, 6, 0], [7, 9, 0]]
答案 2 :(得分:1)
您可以使用operator.itemgetter
以及简单的列表理解来获取所需的元素
>>> from operator import itemgetter
>>> L = [[1, 2, 3, 0, 3, 8], [4, 5, 6, 0, 3, 8], [7, 8, 9, 0, 3, 8]]
>>> col = col=[0,2,3]
>>> M = [list(itemgetter(*col)(i)) for i in l]
>>> M
[[1, 3, 0], [4, 6, 0], [7, 9, 0]]
要将其转换为DataFrame
,您可以
>>> import pandas as pd
>>> df = pd.DataFrame(M)
>>> df
0 1 2
0 1 3 0
1 4 6 0
2 7 9 0
答案 3 :(得分:0)