在熊猫的csv文件中选择一些列

时间:2019-08-27 09:21:56

标签: python pandas csv

我必须从Python中的csv文件中读取一些列/行。我以为可以使用熊猫,但我没有做到这一点: 读取8号和11号之间的列(包括)以及25号和30号之间的行。 我已经在这里看到

How to use pandas to select certain columns in csv file

但是到目前为止,它对我没有帮助。 谢谢您的帮助。

import pandas as pd
df = pd.read_csv('panels.csv' , usecols = ['col1','col2'])
df

3 个答案:

答案 0 :(得分:1)

使用numpy.r_合并索引:

df = pd.read_csv('panels.csv' , usecols = ['col1','col2'])

df = df.iloc[np.r_[8:12, 25:31]]

或者如果只想使用iloc函数按位置填充,则对于列名的位置Index.get_indexer是必要的:

df = pd.read_csv('panels.csv')

df = df.iloc[np.r_[8:12, 25:31], df.columns.get_indexer(['col1','col2'])]

示例:

np.random.seed(2019)
df = pd.DataFrame(np.random.randint(10, size=(35, 3)), columns=['col1','col2', 'col3'])
df.to_csv('panels.csv', index=False)

df1 = pd.read_csv('panels.csv' , usecols = ['col1','col2'])

df1 = df1.iloc[np.r_[8:12, 25:31]]
print (df1)
    col1  col2
8      6     6
9      1     3
10     0     2
11     1     8
25     7     0
26     9     0
27     2     9
28     4     7
29     0     5
30     4     1

df2 = pd.read_csv('panels.csv')

df2 = df2.iloc[np.r_[8:12, 25:31], df2.columns.get_indexer(['col1','col2'])]
print (df2)
    col1  col2
8      6     6
9      1     3
10     0     2
11     1     8
25     7     0
26     9     0
27     2     9
28     4     7
29     0     5
30     4     1

df3 = pd.read_csv('panels.csv')

df3 = df3.loc[df3.index[np.r_[8:12, 25:31]], ['col1','col2']]
print (df3)
    col1  col2
8      6     6
9      1     3
10     0     2
11     1     8
25     7     0
26     9     0
27     2     9
28     4     7
29     0     5
30     4     1

答案 1 :(得分:0)

尝试以下方法,这是一般方法。您可以相应地进行更改。我希望这会有所帮助。

data[['Rank','Title']].iloc[list(range(8,12))+list(range(25,31))]

您可以在此处传递要选择的任何列名,而不是“等级和标题”。

答案 2 :(得分:0)

如果您不想选择数字8和11之间的列以及数字25和30之间的行,请尝试使用以下代码。

data_n = data.loc[8:12, 'Line25':'Line31']