嗨,我有一个pd数据帧列表(其中1377个)。我需要将每个数据帧拆分为行索引以a结尾和行索引以c结尾的情况。
我查看了其他建议的堆栈溢出页面
(df.iloc[all_dfs[0].index.str.endswith('a',na=False)])
但这会转置我的数据框,然后减少行数(以前是转置前的列数)
如果可以的话,这里是我第一个数据框的一小部分。
答案 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]