Python 如何创建新数据帧(Pandas)的条件语句
我有一个多索引数据帧,我想为它创建一个条件语句,如果列“F”中的值大于0,那么在每个特定的列组中都会说“a”,那么整个组(列a)应该复制到一个新的数据帧(newdf)中进行进一步处理 下面是两行df的外观:Python 如何创建新数据帧(Pandas)的条件语句,python,pandas,conditional,Python,Pandas,Conditional,我有一个多索引数据帧,我想为它创建一个条件语句,如果列“F”中的值大于0,那么在每个特定的列组中都会说“a”,那么整个组(列a)应该复制到一个新的数据帧(newdf)中进行进一步处理 下面是两行df的外观: A B C D E F G H A8374D []KLJEFSIJSE some;text more,text 12.4 4.6 13 X5 [
A B C D E F G H
A8374D []KLJEFSIJSE some;text more,text 12.4 4.6 13 X5
[]BKFLKJLJLK text;some other,stuff 65.0 6.5 11 Y0
这是我到目前为止所拥有的(不起作用)
错误消息:
KeyError: 'A'
我想A是你的多重索引之一。我想做一个非索引
df = df.reset_index()
然后我猜你想保持A组中F的A如果ANY大于0
df_new = df.groupby('A').apply(lambda x: (x.F > 0).any()).to_frame('WANT').reset_index()
df_final = df[df.A.isin(df_new.loc[df_new.WANT == 1,'A'])]
如果要确保组A中的所有F值均>0,请更改为
(x.F > 0).all()
如果你还有其他问题,请告诉我。如果您喜欢,请投票支持我什么是
print(df.info())
?您可能只需要创建一个函数,然后使用apply将其实现到新的数据帧。像这样:df.apply(myfunct,axis=1)@MEdwin,我如何指定在每个组中应用该函数?我得到一个带有组名的df(来自a),如果它们的值>0(真/假)。但我实际上想要一个新的数据帧,如果其中任何一个组的F值大于0,那么每个“a”组的所有成员都有。df_final是您想要的结果,因为我选择了每个“a”组的所有数据,如果F>0,我明白您的意思。但是,是否有一种方法可以为每个组获得不同的df?因为之后。这是我想比较“B”上字符串之间的相似性,我认为如果每个“A”组位于不同的df中会更容易,因为它将创建多个比较。如果您确实想为不同的组创建不同的df,可以使用“exec”。对于df_final.A.unique():exec(“df_”+group+“=df_final[df_final.A==group]”中的组,我不确定它是否有效,但它似乎很奇怪,因为您可以在一个数据帧中比较B
(x.F > 0).all()