我想创建一个列,它是存储在其他列中的列表的布尔逻辑的结果。
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]。由于列表格式而出现错误。
非常感谢您的帮助。
您可以使用普通的>
运算符,然后使用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)