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

2024-09-26 18:20:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图删除df中以任何字符串列表开头的所有列。我需要将这些列复制到它们自己的dfs中,现在想将它们从主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


Tags: columns数据代码dfforcolsbbbaaa
1条回答
网友
1楼 · 发布于 2024-09-26 18:20:39

IICU

让我们从一个数据帧开始

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

修改dataframe以包含列

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'))]

相关问题 更多 >

    热门问题