我正在使用一个panda数据框架,其中我将列表作为单个单元格元素(用于少数列)。我想检查一列中列表中每个元素的条件,并从另一列中选择相应的列表元素。我知道使用zip命令可以很容易地做到这一点,例如:
p = 5 ; q = 6;
DF['Column3'] = [[b for a, b in zip(x, y) if a > p and a <q ] for x, y in zip(DF['Column1'], DF['Column2'])]
然而,我不确定如何在这里使用百分位数,即,而不是固定的p和q,我想使用列表的一些百分位数值(例如50(相当于p)百分位数到90百分位数(相当于q))。
因此,对于列中的每个单元格(每个单元格组成一个列表),它应该计算preentile值并检查另一列中其他列表(来自相应的单元格)中的相应列表元素。
用一个例子(假设是DF)来解释这个问题:
您可以使用numpy.percentile
来获取您的范围的两个值。然后,跨列使用列表推导(通过传递axis=1
)。
作为一行代码,可以这样做:
df['Column3'] = (df.assign(Column3=df['Column1'].apply(lambda x: np.percentile(x, [50, 90])))
.apply(lambda x: [b for (a,b) in zip(x['Column1'], x['Column2'])
if x['Column3'][0] < a < x['Column3'][1]], axis=1))
将步骤分解为更详细的内容:
df = pd.DataFrame(
{'A' : [3.4,4],
'B' : [5.7, 1.7],
'Column1' : [[2.1, 2.9, 5.2, 6.8], [1.1, 2.5, 5.6, 11.5, 15.6, 21.5]],
'Column2' : [[2.5,3.4,1.2,5.1],[12.15,1.58,5.4,1.2,34.2,67.2]]})
df['Column3'] = df['Column1'].apply(lambda x: np.percentile(x, 50))
df['Column4'] = df['Column1'].apply(lambda x: np.percentile(x, 90))
df['Column5'] = df.apply(lambda x: [b for (a,b) in zip(x['Column1'], x['Column2'])
if x['Column3'] < a < x['Column4']], axis=1)
df
Out[1]:
A B Column1
0 3.4 5.7 [2.1, 2.9, 5.2, 6.8]
1 4.0 1.7 [1.1, 2.5, 5.6, 11.5, 15.6, 21.5]
Column2 Column3 Column4 Column5
0 [2.5, 3.4, 1.2, 5.1] 4.05 6.32 [1.2]
1 [12.15, 1.58, 5.4, 1.2, 34.2, 67.2] 8.55 18.55 [1.2, 34.2]
从这里,你可以做:
df = df.drop(['Column3', 'Column4'], axis=1)
相关内容
- 如何在python中计算分布的百分位数
- python百分位数以15天窗口为中心
- 如何实现千分隔符在字符串数据帧不修改一行与百分比值在Python熊猫?
- Python创建列来存储特定值在groupby之后的第95个百分位数的平均值
- 添加百分比值(python)
- 如何在python和beautifulsoup中获取表中的百分比值
- Python -创建两个新列,其中包含几个行值的第25和第75百分位
- 在 python 极坐标上,对数据帧上的一组列应用带有百分位数的排名
- 同时使用zip和百分位数- Python
- 如何编写Python程序来计算给定数据集的十分位数、百分位数和分位数
- 将数字增加百分之一的Python脚本
- 基于行中值的百分位数对数据帧进行评分-Python
- 如何计算python中每15行的百分位数
- 在 Python 中用两个符号替换百分之一的符号?
- Python-如果字符串存在于文本中,则获取概率/百分比值
- 日期时间列 Python 的百分位数
- 计算 Python 中列表中分类值的百分位数
- 在 python 中为一长串股票分配百分位值
- 计算 Python 熊猫数据帧中的百分位数
- 即使在 Python 中具有相同的值,也是唯一的百分位数
最新更新
- 在编写凯撒密码练习时,输入的秘密消息应该输出为VhfuhwqPhvvdjh,但它输出为VhfuhwqPhvvdjh.&l
- 所有的ARM编译器会产生相同的汇编代码并在不同的cpu上运行吗?
- NestJS TypeORM createQueryBuilder SELECT query
- JPARepository - delete使用日期比较与派生查询
- 将二进制文件内容转储为JSON数组
- 在RISC-V中,a1寄存器何时用于函数返回?
- 轨道:"验证失败:类必须存在"在Form_with
- 为什么我的c#默认接口实现在具体的类定义中不被识别?
- 我应该如何处理Azure管道作业之间的中间构建文件?
- 如何让不和谐机器人在断开连接后向频道发送消息?
- 不能用作 JSX 组件。它的返回类型'void'不是有效的JSX element.ts(2786)
- 如何从同一个生产者向不同的Kafka主题和模式注册表生成消息
- Docker只识别相对目录,不识别绝对目录
- 在Swift中创建子类时如何避免重复属性定义?
- 覆盖参数[和]之间的文本文件
- 如何使用Joi验证十进制数的精度
- 如何在Android Studio的调试模式中跳过for循环的一次迭代?
- 如何从文件中删除短行文本
- SQL基于一个列的重复数据行
- 页面右侧没有填充或边距
- Rails:在PostgreSQL中存储高货币值
- 使用Angular 2使用鼠标点击或键盘选项卡的触发函数
- Azure搜索solr索引定义以支持多个市场
- 在python中派生相同的类两次是可以的吗?
- 无法使用 docker 多阶段构建执行 go 二进制文件
- CSS "overflow: hidden;" 仍然适用于伪 "::after"
- 如何从bash中的源脚本中获取源bash-dir
- JMH - 如何正确对线程池进行基准测试
- 当使用' show '而不是整个show字符串时,我如何访问数据类型的字段?
- Open API version 3.1示例请求(json)
热门标签:
javascript python java c# php android html jquery c++ css ios sql mysql arrays asp.net json python-3.x ruby-on-rails .net sql-server django objective-c excel regex ruby linux ajax iphone xml vba spring asp.net-mvc database wordpress string postgresql wpf windows xcode bash git oracle list vb.net multithreading eclipse algorithm macos powershell visual-studio image forms numpy scala function api selenium