删除以任何熊猫字符串列表开头的列

时间:2020-06-08 20:32:09

标签: python pandas data-cleaning

我正在尝试从df中删除以任何字符串列表开头的所有列。我需要将这些列复制到它们自己的df中,现在想将它们从主df的副本中删除以使其更易于分析。

df.columns = ["AAA1234", "AAA5678", "BBB1234", "BBB5678", "CCC123", "DDD123"...]

输入了一些代码,这些代码为我提供了带有这些列的这些数据帧:

aaa.columns = ["AAA1234", "AAA5678"]
bbb.columns = ["BBB1234", "BBB5678"]

我确实得到了想要的最终df,但是我的代码感觉很笨拙:

droplist_cols = [aaa, bbb]
droplist = []
for x in droplist_cols:
    for col in x.columns:
        droplist.append(col)
df1 = df.drop(labels=droplist, axis=1)

最终df列:

df1.columns = ["CCC123", "DDD123"...]

有更好的方法吗?

-编辑示例数据-

df = pd.DataFrame([[1, 2, 3, 4, 5], [1, 3, 4, 2, 1], [4, 6, 9, 8, 3], [1, 3, 4, 2, 1], [3, 2, 5, 7, 1]], columns=["AAA1234", "AAA5678", "BBB1234", "BBB5678", "CCC123"])

所需结果:

   CCC123
0    5
1    1
2    3
3    1
4    1

1 个答案:

答案 0 :(得分:0)

IICU

让我们从一个数据帧开始;

df=pd.DataFrame({"A":[0]})

修改数据框以包含您的列

df2=df.reindex(columns=["AAA1234", "AAA5678", "BBB1234", "BBB5678", "CCC123", "DDD123"], fill_value=0)

删除所有以A开头的列

df3=df2.loc[:,~df2.columns.str.startswith('A')]

如果您需要拒绝说A或B,我会

df3=df2.loc[:,~(df2.columns.str.startswith('A')|df2.columns.str.startswith('B'))]