首页 > 解决方案 > 熊猫数据框列 - 如何根据多个条件选择列的子集

问题描述

假设我在数据框中有以下列:

title
year
actor1
actor2
cast_count
actor1_fb_likes
actor2_fb_likes
movie_fb_likes

我想从数据框中选择以下列并忽略其余列:

  1. 前 2 列(标题和年份)
  2. 一些基于名称的列 - cast_count
  3. 一些包含字符串“actor1”的列 - actor1 和 actor1_fb_likes

我是熊猫新手。对于上面的每一个操作,我都知道使用什么方法。但是我想一起执行所有三个操作,因为我想要的只是一个数据框,其中包含我需要进一步分析的上述列。我该怎么做呢?

这是我编写的示例代码:

data = {
"title":['Hamlet','Avatar','Spectre'],
"year":['1979','1985','2007'],
"actor1":['Christoph Waltz','Tom Hardy','Doug Walker'],
"actor2":['Rob Walker','Christian Bale ','Tom Hardy'],
"cast_count":['15','24','37'],
"actor1_fb_likes":[545,782,100],
"actor2_fb_likes":[50,78,35],
"movie_fb_likes":[1200,750,475],
}
df_input = pd.DataFrame(data)
print(df_input)

df1 = df_input.iloc[:,0:2] # Select first 2 columns
df2 = df_input[['cast_count']] #select some columns by name - cast_count
df3 = df_input.filter(like='actor1') #select columns which contain the string "actor1" - actor1 and actor1_fb_likes

df_output = pd.concat(df1,df2, df3) #This throws an error that i can't understand the reason
print(df_output)

标签: pandas

解决方案


问题一:

df_1 = df[['title', 'year']]

问题2:

# This is an example but you can put whatever criteria you'd like
df_2 = df[df['cast_count'] > 10]

问题 3:

# This is an example but you can put whatever criteria you'd like this way
df_2 = df[(df['actor1_fb_likes'] > 1000) & (df['actor1'] == 'actor1')]

()在使用&or运算符之前,请确保每个过滤器都包含在它自己的括号中|&充当 and 运算符。|充当或运算符。


推荐阅读