1

我有一个数据框需要保存在下面的结构中。


df
  One       two   three          
  date      apple  banana
2019-12-20   0      4
2020-01-03   10     5

有没有办法只保留列表中包含第二行的列?我只熟悉为列执行此操作

fruits= ["date", "apple"]
df = df.loc[:, df.columns.isin(fruits)

预期产出

   One       two          
  date      apple  
2019-12-20   0      
2020-01-03   10    
4

2 回答 2

1

使用.isin和使用level参数来指定多索引的级别。

如果你没有多索引集,你可以在你的阅读中设置它。

df = pd.read_csv('file.csv',sep='\s+',header=[0,1])

df.loc[:,df.columns.isin(fruits,level=1)]

print(df)
         One   two
         date apple
2  2019-12-20     0
3  2020-01-03    10

df.columns.isin(fruits,level=1)
array([ True,  True, False])
于 2021-06-25T11:19:45.707 回答
1

由于您的数据框不在多索引列中,并且您想按第 0 行值过滤列,您可以.isin()在第一行使用iloc[0]

df.loc[:, df.iloc[0].isin(fruits)]

结果:

          One    two
0        date  apple
1  2019-12-20      0
2  2020-01-03     10

于 2021-06-25T11:31:33.827 回答