Pd 数据透视表 lambda 函数连接列值但异常不起作用

问题描述 投票:0回答:1

我目前正在使用一个数据框,查看带有

pandas
的肯塔基州油井,并希望使用 API 标识符创建
pivot table
。由于有各种重复项,我也想要
join
非唯一值。

下面是数据框的示例:

import pandas as pd

df = pd.DataFrame({'API': ['16101030580000', '16101030580000', '16129057600000','16013006300000'], 
                   'Date': ['0000/00/00','6/15/2007', '5/25/2020', '7/31/2014'],
                   'Annual_Oil':[300,'nan',150, 360],
                   'State':['KY','None', 'None', 'KY']})

此外,我创建了一个我不想加入的值列表。然而,当运行代码时,我在数据框中得到了一些不应该存在的值。

list_none = ['none', 'nan', 'NAN','None', '0000/00/00','000']
df1 = pd.pivot_table(df, index = 'API',
                        aggfunc = lambda x: (','.join(x.unique().astype(str)) if x not in list_none else x),
                        sort = False)

此示例数据框的输出如下所示

                Date                    Annual_Oil State
API         
16101030580000  0000/00/00,6/15/2007    300,nan    KY,None
16129057600000  5/25/2020               150        None
16013006300000  7/31/2014               360        KY

有没有办法在数据透视表中重构 lambda 函数,或者我必须手动删除不需要的连接?

python pandas dataframe join pivot-table
1个回答
0
投票

您应该过滤

join
中的值:

list_none = ['none', 'nan', 'NAN', 'None', '0000/00/00', '000']
df1 = pd.pivot_table(
    df,
    index='API',
    aggfunc=lambda x: ','.join(
        i for i in x.unique().astype(str) if i not in list_none
    ),
    sort=False,
)

输出:

                     Date Annual_Oil State
API                                       
16101030580000  6/15/2007        300    KY
16129057600000  5/25/2020        150      
16013006300000  7/31/2014        360    KY
© www.soinside.com 2019 - 2024. All rights reserved.