我必须从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
答案 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']