gpt4 book ai didi

python - 使用阈值 pandas 数据框选择值

转载 作者:行者123 更新时间:2023-11-30 22:22:23 24 4
gpt4 key购买 nike

我想制作一个列列表,其中每个索引 = [0,43,46] 的值都高于某个值,例如 1000。

我的数据框看起来像这样,但有更多列。

index           asset.assetStateId.10  asset.assetStateId.100  asset.assetStateId.101  \
0.0 1057.0 0.0 0.0
43.0 380.0 1441.0 0.0
46.0 0.0 0.0 1441.0

所以,最后,我想要三个列表,其中每行的值都高于 1000 的列的名称。

提前致谢,

到目前为止我已经尝试过:

lista_colunas = list(result_1.columns.values)
lista_assets = []
for asset in lista_colunas:
if result_1.loc[result_1[asset]>1000]:
lista_assets += [asset]

ValueError:DataFrame 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。

最佳答案

我认为你可以创建列表字典:

如有必要,首先按 loc 选择行,然后按 stack reshape 形状和 reset_index :

idx  = [0,43,46] 
df = df.loc[idx].stack().reset_index(name='val')
print (df)
Index level_1 val
0 0 asset.assetStateId.10 1057.0
1 0 asset.assetStateId.100 0.0
2 0 asset.assetStateId.101 0.0
3 43 asset.assetStateId.10 380.0
4 43 asset.assetStateId.100 1441.0
5 43 asset.assetStateId.101 0.0
6 46 asset.assetStateId.10 0.0
7 46 asset.assetStateId.100 0.0
8 46 asset.assetStateId.101 1441.0

然后按boolean indexing过滤,groupby并创建list,最后转换为dict:

a = df[df['val'] > 1000].groupby('index')['level_1'].apply(list).to_dict()

另一种解决方案是按每行循环并按条件创建列表:

a = df.loc[idx].apply(lambda x: x.index[x > 1000].tolist(), axis=1).to_dict()

print (a)
{0.0: ['asset.assetStateId.10'],
43.0: ['asset.assetStateId.100'],
46.0: ['asset.assetStateId.101']}

print (a[0])
['asset.assetStateId.10']

print (a[43])
['asset.assetStateId.100']

关于python - 使用阈值 pandas 数据框选择值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48341948/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com