gpt4 book ai didi

python - Pandas 选择成可迭代变量?

转载 作者:太空宇宙 更新时间:2023-11-04 05:16:56 25 4
gpt4 key购买 nike

我想要完成的事情的大图是这样的:

我想选择我们亏本出售的部分,将它们放入列表中,然后遍历列表并使用 .agg() 进行一些分析。

这是一个包含一些数据和示例输出的示例 CSV 文件的链接:

https://drive.google.com/open?id=0B4xdnV0LFZI1RktqR0dVWVZEYkU

到目前为止,这是我的代码:

import pandas as pd
df = pd.DataFrame
df = pd.read_csv('SO_Sample.csv')
dfLoss = df[(df['Profit/Loss'] < 0)]

part_count = pd.DataFrame
part_count = (dfLoss.groupby(['Part','Rev'])[['Serial_No']].count())
print(part_count)

我得到了一个结果集,这就是我卡住的地方。

我不知道如何从 Pandas 的分组选择中分配成对的可迭代变量。一旦我能做到这一点,我想遍历原始 df 并获取零件和转速组合的历史摘要数据。

这让我想到了第二个问题,Pandas 拼图的组合部分 - 将返回的数据全部放在一起。

最终输出看起来像这样:

Part    Rev    Serial_No    Profit/Loss    Count    Min    Max    Mean    Std

['Part', 'Rev', 'Serial_No', 'Profit/Loss'] 将来自原始 df,然后是 ['count', 'min', 'max', 'mean', ' std'] 将是所有历史部分记录的总和。

如果这确实是第二个问题,我会单独发布,但我正在费力(一点点)试图找出第一部分。

预先感谢您的帮助!

最佳答案

试试这个:

In [48]: (df[df[['Part','Rev']].isin(dfLoss[['Part','Rev']]).all(1)]
...: .groupby(['Part','Rev','Serial_No'])
...: .agg({'Profit/Loss':['count','min','max','std']})
...: )
...:
Out[48]:
Profit/Loss
count min max std
Part Rev Serial_No
Table leg a S12369 1 -19.0 -19.0 NaN
b S12349 1 -34.0 -34.0 NaN
c S12359 1 -57.0 -57.0 NaN
Widget a S12345 1 -4.0 -4.0 NaN
wrench a S12360 1 -99.0 -99.0 NaN
b S12370 1 -22.0 -22.0 NaN
c S12350 1 -15.0 -15.0 NaN

或:

In [49]: (df[df[['Part','Rev']].isin(dfLoss[['Part','Rev']]).all(1)]
...: .groupby(['Part','Rev','Serial_No'], as_index=False)
...: .agg({'Profit/Loss':['count','min','max','std']})
...: )
...:
Out[49]:
Part Rev Serial_No Profit/Loss
count min max std
0 Table leg a S12369 1 -19.0 -19.0 NaN
1 Table leg b S12349 1 -34.0 -34.0 NaN
2 Table leg c S12359 1 -57.0 -57.0 NaN
3 Widget a S12345 1 -4.0 -4.0 NaN
4 wrench a S12360 1 -99.0 -99.0 NaN
5 wrench b S12370 1 -22.0 -22.0 NaN
6 wrench c S12350 1 -15.0 -15.0 NaN

解释:

In [53]: df[['Part','Rev']].isin(dfLoss[['Part','Rev']])
Out[53]:
Part Rev
0 True True
1 False False
2 False False
3 False False
4 True True
5 True True
.. ... ...
493 False False
494 False False
495 False False
496 False False
497 False False
498 False False

[499 rows x 2 columns]

In [54]: df[['Part','Rev']].isin(dfLoss[['Part','Rev']]).all(1)
Out[54]:
0 True
1 False
2 False
3 False
4 True
5 True
...
493 False
494 False
495 False
496 False
497 False
498 False
dtype: bool

关于python - Pandas 选择成可迭代变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41464461/

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