Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何创建新数据帧(Pandas)的条件语句_Python_Pandas_Conditional - Fatal编程技术网

Python 如何创建新数据帧(Pandas)的条件语句

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 [

我有一个多索引数据帧,我想为它创建一个条件语句,如果列“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

         []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()