我有一个有很多行的df:
13790226 0.320 0.001976
9895d5dis 182.600 0.040450
105066007 18.890 0.006432
109067019 52.500 0.034011
111845014 16.400 0.023974
11668574e 7.180 0.070714
113307021 4.110 0.017514
113679I37 8.180 0.010837
我想过滤此df以获取索引最后一个字符不是数字的行
所需的df:
9895d5dis 182.600 0.040450
11668574e 7.180 0.070714
我该怎么做?
答案 0 :(得分:3)
df['is_digit'] = [i[-1].isdigit() for i in df.index.values]
df[df['is_digit'] == False]
但我更喜欢正则表达式:
df[df.index.str.contains('[A-z]$')]
答案 1 :(得分:2)
这是一种简洁的方法,无需创建新的临时列:
df
b c
a
9895d5dis 182.60 0.040450
105066007 18.89 0.006432
109067019 52.50 0.034011
111845014 16.40 0.023974
11668574e 7.18 0.070714
113307021 4.11 0.017514
113679I37 8.18 0.010837
df[~df.index.str[-1].str.isnumeric()]
b c
a
9895d5dis 182.60 0.040450
11668574e 7.18 0.070714
答案 2 :(得分:2)
您要过滤的列是索引还是列?如果它是一列
df1 = df[df[0].str.contains('[A-Za-z]')]
返回
0 1 2
1 9895d5dis 182.60 0.040450
5 11668574e 7.18 0.070714
7 113679I37 8.18 0.010837 #looks like read_clipboard is reading 1 in 113679137 as I
如果是索引,首先要做
df = df.reset_index()
答案 3 :(得分:0)
把它扔进混合物中:
df.loc[[x for x in df.index if x[-1].isalpha()]]