使用列表过滤第二行的数据框
Filter dataframe on second row using list
我有一个数据框需要保存在下面的结构中。
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
使用.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])
由于您的数据框不在多索引列中,并且您想按第 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
我有一个数据框需要保存在下面的结构中。
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
使用.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])
由于您的数据框不在多索引列中,并且您想按第 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