python - 使用 Pandas Python 格式化具有给定限制的数据表
问题描述
我正在尝试格式化数据,input.csv
以便它返回满足条件的索引Indexes
。我希望代码打印出所有在#intervals
. 只有第一行元素[ 2. 2. 30.]
满足在Indexes
变量中定义的限制。本质上,我想打印出所有行: 那满足条件: if column['MxU'] >= MxU and column['SNPT'] >= SNPT..... and column['MxD'] >= MxD
。下面的代码来自我之前的帖子:post。我想接受更多参数,columns
但我只能接受两个。我想让它模块化,这样我就可以接受 1 到尽可能多 intervals
的columns1-4
工作。
输入.csv 文件:
element,LNPT,SNPT,NLP,NSP,TNT,TPnL,MxPnL,MnPnL,MxU,MxD
[ 2. 2. 30.],0,0,4,4,8,-0.1,-0.0,-0.1,17127,-3
[ 2. 2. 40.],0,0,2,2,4,0.0,-0.0,-0.0,17141,-3
[ 2. 2. 50.],0,0,2,2,4,0.0,-0.0,-0.0,17139,-3
[ 2. 2. 60.],2,0,6,6,12,0.5,2.3,-1.9,17015,-3
[ 2. 2. 70.],1,0,4,4,8,0.3,0.3,-0.0,17011,-3
import functools
df = pd.read_csv('STDOutputs_Q1.csv')
intervals = {
'MxU': 17100,
'SNPT': 1000,
'NLP': 30,
'MnPnL': -0.1,
'MxD': -10
}
columns1 = ['NLP', 'MxD']
columns2 = ['NLP', 'MxD', 'MnPnL']
columns3 = ['SNPT']
columns4 = ['MxU', 'SNPT', 'NLP', 'MnPnL', 'MxD']
def masking(columns):
mask = functools.reduce(lambda c1, c2: (df[c1] >= intervals[c1]) & (df[c2] >= intervals[c2]),
columns)
df_ = df.loc[mask, 'element']
masking(columns1)
masking(columns2)
masking(columns3)
masking(columns4)
解决方案
推荐阅读
- java - 想要将 SearchView 连接到 Mainactivity 数据 - 制作一个带有搜索视图的记事本应用程序以连接到记事本的笔记
- flutter - 如何检查是否有用户登录应用程序
- javascript - 我怎么能得到数字而不是南?
- javascript - 如何在两个对象数组之间创建每个可能的组合?
- python-3.x - 使用 update_item 动态更新 dynamoDB
- java - Java读取输入/输出打印重复字符串到文件
- python - md5 不适用于 pyspark 中的复杂数据类型
- javascript - Angular 8:从 JSON 服务器获取数据并使用复选框过滤表中的数据
- xml - groovy:修改现有的 xml,总结重复的标签
- javascript - Javascript - 抛出、实例化 new Error() 并在一行中填充其自定义属性