筛选熊猫数据框列表,使其仅包含以

时间:2020-01-12 11:49:30

标签: python pandas

嗨,我有一个pd数据帧列表(其中1377个)。我需要将每个数据帧拆分为行索引以a结尾和行索引以c结尾的情况。

我查看了其他建议的堆栈溢出页面

(df.iloc[all_dfs[0].index.str.endswith('a',na=False)])

但这会转置我的数据框,然后减少行数(以前是转置前的列数)

如果可以的话,这里是我第一个数据框的一小部分。

enter image description here

1 个答案:

答案 0 :(得分:3)

您可以使用str.endswith将测试值的元组传递到boolean indexing进行过滤:

df = pd.DataFrame({'a':range(5)}, 
                   index=['_E031a','_E031b','_E031c','_E032a','_E032b'])

df1 = df[df.index.str.endswith(('a', 'c'),na=False)]
print (df1)
        a
_E031a  0
_E031c  2
_E032a  3

或者通过索引[-1]获取字符串的最后一个值,并通过Index.isin测试成员资格:

df1 = df[df.index.str[-1].isin(['a', 'c'])]
print (df1)
        a
_E031a  0
_E031c  2
_E032a  3

要循环使用DataFrame列表,请使用:

all_dfs = [df[df.index.str.endswith(('a', 'c'),na=False)] for df in all_dfs]

如果只想测试a

all_dfs = [df[df.index.str.endswith('a',na=False)] for df in all_dfs]
相关问题