我目前正在使用一个数据框,查看带有
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 函数,或者我必须手动删除不需要的连接?
您应该过滤
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