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



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

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

我想要的输出是一个新的列(df['seqToFs'](,它是True或False列表对于df['seq']列表中的值>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'],prices为new coldf['sequToFs]。由于列表格式而出现错误。

非常感谢您的帮助。

您可以使用普通的>运算符,然后使用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)

相关内容

  • 没有找到相关文章

最新更新