假设我有以下数据框:
Date Open High Low Close Volume min max Loc
Date
2020-06-15 14:00:00 2020-06-15 14:00:00 0.000123 0.000130 0.000121 0.000128 1467828.0 0.00012081 0.00013040 0
2020-06-15 18:00:00 2020-06-15 18:00:00 0.000128 0.000129 0.000123 0.000125 1264642.0 0 0 1
2020-06-15 22:00:00 2020-06-15 22:00:00 0.000125 0.000126 0.000122 0.000123 723738.0 0 0 2
我正在尝试创建一个新的数据框,其中:
Open
,min
,max
Loc
但只有在min
和max
是> 0。Loc
现在我知道可以使用另一个数据框创建一个数据框,pandas.concat()
但是我不知道如何设置上述条件。有人可以帮我吗?
预期输出示例:
Loc Open min max
0 0.000123 0.00012081 0.00013040
首先创建的掩码过滤器,DataFrame.gt
用于通过比较两个列中的更大者DataFrame.all
,选择列DataFrame.loc
,最后添加DataFrame.set_index
:
df = df.loc[df[['min','max']].gt(0).all(axis=1), ['Open','min','max','Loc']].set_index('Loc')
print (df)
Open min max
Loc
0 0.000123 0.000121 0.00013
或分别比较两列和链掩码&
,按位AND
:
df = df.loc[df['min'].gt(0) & df['max'].gt(0), ['Open','min','max','Loc']].set_index('Loc')
编辑:
因为错误:
''>''在'str'和'int'的实例之间不受支持,
这意味着在min
或max
列(或两者)中都有值的字符串表示形式,因此在上述解决方案之前将值转换为数字:
df['min'] = pd.to_numeric(df['min'], errors='coerce')
df['max'] = pd.to_numeric(df['max'], errors='coerce')
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句