我有一个熊猫DataFrame(df),有很多列,其中两个是“年”和“col_1”
我还有一个列表中总结的提取标准(标准):
[1234,5432,...,54353,654,1234].
如果满足以下条件,我想提取此数据帧的子集:
((df.Year==1990) & (df.col_1>=Criteria[0])) or
((df.Year==1991) & (df.col_1>=Criteria[1])) or
((df.Year==1992) & (df.col_1>=Criteria[2])) or
...
((df.Year==2010) & (df.col_1>=Criteria[20])) or
((df.Year==2011) & (df.col_1>=Criteria[21]))
虽然我可以列出所有这些标准的组合,但我想在一个简短的行中这样做,比如:
df = df[df[['col_1','col_2']].apply(lambda x: f(*x), axis=1)]
(来自如何按多列筛选数据帧)
请告诉我怎么做。非常感谢。
示例数据帧
:
df = pd.DataFrame({'col_1':[2000,1,54353,5],
'Year':[1990,1991,1992,1993],
'a':range(4)})
print (df)
col_1 Year a
0 2000 1990 0
1 1 1991 1
2 54353 1992 2
3 5 1993 3
按条件和年份组合创建帮助器字典
:
Criteria = [1234,5432,54353,654,1234]
years = np.arange(1990, 1990 + len(Criteria))
d = dict(zip(years, Criteria))
print (d)
{1990: 1234, 1991: 5432, 1992: 54353, 1993: 654, 1994: 1234}
最后一个映射
按列年份
和按布尔索引
筛选:
df = df[df['col_1'] >= df['Year'].map(d)]
print (df)
col_1 Year a
0 2000 1990 0
2 54353 1992 2
详情:
print (df['Year'].map(d))
0 1234
1 5432
2 54353
3 654
Name: Year, dtype: int64
print (df['col_1'] >= df['Year'].map(d))
0 True
1 False
2 True
3 False
dtype: bool
我正在尝试根据两个行值筛选出行。我看到的大多数问题的解决方法都采用以下方法: 可能我在这里弄得很混乱,这很简单。无论如何,任何帮助都将不胜感激! 问候
我目前正在用maven 3.1.1和maven war插件2.4建立一个web项目(http://maven.apache.org/plugins/maven-war-plugin/war-mojo.html). 特别是,我正在尝试用maven war插件复制和过滤资源,这种方式我在过去已经做过了,而且很有效。以下是相关pom配置: WAR插件配置 激活的配置文件定义: META-INF/上下文。
我有这个在重复播放 来自网站数组的每个网站对象如下所示: 问题:如何将过滤器应用于上述循环,使其仅显示属性为空数组的元素? 我尝试过的事情: (控制台中没有错误,但会过滤掉所有内容) (与我想要的相反,只显示组不是空数组的项目) (如果我用null代替[]来表示没有值,这是可行的,但看起来真的很混乱……因为我需要经常注意组属性变为空,并手动将其设置为null)
我愿意过滤其中有短信和电话在列中的id,每当等于 预期结果 在这种情况下,只有id 2的登录方法中的电话和短信等于重新发送
若要用单个列过滤数据文件(DF),如果我们考虑有男性和女性的数据,我们可以: 问题1——但如果数据跨越多年,而我只想看到2014年的男性会怎样? 在其他语言中,我可能会这样做: (除非我想这样做并在新的dataframe对象中获取原始dataframe的子集) 问题2。我如何在一个循环中实现这一点,并为每个独特的年份和性别集(即:2013年男性、2013年女性、2014年男性和2014年女性)创建
我有几个表,我希望根据另一个表中是否存在两列来筛选其中一个表中的行。每个表上的数据如下 表2:每个用户哈希与用户ID唯一相关联 表3:每个商品名称与商品编号唯一相关联 表4 在我的示例中,ID2和Number2都在表1中,但不在同一行上,所以我想从表4中筛选此行。 我希望问题足够清楚。提前感谢!