我有一个大型数据库,我想在其中选择符合特定条件的所有列:
我的数据如下所示:
Name a b c
target-01 5196 24 24
target-02 5950 150 150
target-03 5598 50 50
object-01 6558 44 -1
object-02 6190 60 60
我想选择Name
以target
开头的所有数据。
所以选定的df
将是:
target-01 5196 24 24
target-02 5950 150 150
target-03 5598 50 50
我正在使用以下方式阅读数据:
data = pd.read_csv('catalog.txt', sep = '\s+', header = None, skiprows =1 )
如何选择我想要的数据?
答案 0 :(得分:2)
使用str.startswith
和boolean indexing
:
print (df[df.Name.str.startswith('target')])
Name a b c
0 target-01 5196 24 24
1 target-02 5950 150 150
2 target-03 5598 50 50
str.contains
的另一个解决方案:
print (df[df.Name.str.contains(r'^target')])
Name a b c
0 target-01 5196 24 24
1 target-02 5950 150 150
2 target-03 5598 50 50
filter
的最后解决方案:
df.set_index('Name', inplace=True)
print (df.filter(regex=r'^target', axis=0))
a b c
Name
target-01 5196 24 24
target-02 5950 150 150
target-03 5598 50 50
print (df.filter(regex=r'^target', axis=0).reset_index())
Name a b c
0 target-01 5196 24 24
1 target-02 5950 150 150
2 target-03 5598 50 50