【发布时间】:2022-08-21 04:33:00
【问题描述】:
假设有一个包含 120 列的数据框。我只需要编号为 2-50、59-84 和 95-110 的列。我试过这段代码。它不起作用。
df.iloc[:,[2:50,59:84,95:110]]
标签: python pandas dataframe slice numpy-slicing
假设有一个包含 120 列的数据框。我只需要编号为 2-50、59-84 和 95-110 的列。我试过这段代码。它不起作用。
df.iloc[:,[2:50,59:84,95:110]]
标签: python pandas dataframe slice numpy-slicing
尝试这个
df.iloc[:, np.r_[2:50,59:84,95:110]]
这对我有用:
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.rand(5,60))
print(df.iloc[:, np.r_[1:3, 5:8]])
输出:
1 2 5 6 7
0 0.830642 0.054954 0.686140 0.472132 0.227086
1 0.634129 0.304420 0.688517 0.192814 0.291788
2 0.697258 0.332265 0.305456 0.900968 0.657861
3 0.616603 0.382215 0.794018 0.053626 0.952454
4 0.568792 0.553030 0.761718 0.780927 0.253707
或者这个(相同的输出)
cols = list(range(1,3)) + list(range(5,8))
print(df.iloc[:, cols])
【讨论】:
df.iloc[:, lambda df: [*range(2, 50)] + [*range(59, 84)] + [*range(95, 110)]
【讨论】: