python - 对存储在 Dataframe 单元格中的列表应用条件语句

标签 python list dataframe boolean-logic

我想创建一个列,它是存储在其他列中的列表的 bool 逻辑结果。

import pandas as pd
import numpy as np
d = {'202201': [7180516.0, 4868058.0], '202202': [433433740.0, 452632806.0], '202203': [5444119.0, 10000000.0]}
df = pd.DataFrame(data=d)

#Storing Values in List
df['seq'] = df.agg(list, axis=1)
#Or
#df['seq'] = df.agg(np.array, axis=1)
df

我想要的期望输出是一个新的 col (df['seqToFs']),它是一个 True 或 False 列表 对于 df['seq']list > 8000000 中的值。

import numpy as np
d = {'202201': [7180516.0, 4868058.0], '202202': [433433740.0, 452632806.0], '202203': [5444119.0, 10000000.0], 
     'seq':[[7180516.0,433433740.0,5444119.0],[4868058.0,452632806.0,10000000.0]], 'seqToFs':[[False,True,False],[False,True,True]]}
df = pd.DataFrame(data=d)
df

为了性能,df['seq'] 是列表还是 np.array 更好?

我的最终目标是分析满足条件的值的顺序。有没有比在数据框中制作列表更好的方法来执行此类分析?

我尝试应用于每一行的示例框架工作。 (不是我的代码)

original_prices = [1.25, -9.45, 10.22, 3.78, -5.92, 1.16]
prices = [True if i > 0else False for i in original_prices]
prices

其中 original_prices 列表被行列表 df['seq'] 替换,价格是新的 col df['seqToFs]。由于列表格式而出现错误。

非常感谢您的帮助。

最佳答案

您可以使用普通的 > 运算符,然后使用 aggapply 来获得所需的输出:

(df > 8000000).apply(list, axis=1)

0    [False, True, False]
1     [False, True, True]

例子:

df = pd.DataFrame({'202201': [7180516.0, 4868058.0], '202202': [433433740.0, 452632806.0], '202203': [5444119.0, 10000000.0]})
df['seqToFs'] = (df > 8000000).apply(list, axis=1)

关于python - 对存储在 Dataframe 单元格中的列表应用条件语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74100178/

相关文章:

python - 调用 app.MainLoop() 后更新 wxPython 进度条

string - 将输入列表中的每个连续元素比前一个元素重复一个

javascript - 完成一个项目会为其添加两个新行,而它本身的函数中没有这样的东西

python - 基于索引列表返回子列表的最简单和最有效的函数是什么?

python - Python进程作为适当的守护程序(以及Windows服务)

python - 计算连续 Pandas 中字符串的出现次数

python - 如何使用条件传输数据以及将数据从一个多维数组修剪到另一个多维数组

python - 查找具有最高值的列( Pandas )

python - 在 pandas 数据帧上执行 fillna 时出现 InvalidIndexError

python - Pandas:根据行内容选择列