我想创建一个列,它是存储在其他列中的列表的 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]。由于列表格式而出现错误。
非常感谢您的帮助。
最佳答案
您可以使用普通的 >
运算符,然后使用 agg
或 apply
来获得所需的输出:
(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/