我必须从 Python 中的 csv 文件中读取一些列/行。我想使用 Pandas,但我无法做到这一点: 阅读数字 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
最佳答案
使用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
关于python - 在pandas中选择csv文件中的一些列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57671492/