我正在尝试从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
答案 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'))]