gpt4 book ai didi

python - 查找两个值并填写

转载 作者:太空宇宙 更新时间:2023-11-04 04:17:02 26 4
gpt4 key购买 nike

我有一个数据框(我的真实数据框有 50 000 行和 34 列):

df = pd.DataFrame({
'NAME': ['APPLE COMPANY A', 'BANANA COMPANY B', 'ORANGE COMPANY C', 'APPLE COMPANY A'],
'INVESTMENTS': ['OIL LTD', 'GOLD LTD', 'GAS LTD', 'GAS LTD'],
'STOCKS' : [100, 200, 300, 400],
'OIL LTD': [0, 0, 0, 0],
'GOLD LTD': [0, 0, 0, 0],
'GAS LTD': [0, 0, 0, 0],
})

NAME INVESTMENTS STOCKS OIL LTD GOLD LTD GAS LTD
0 APPLE COMPANY A OIL LTD 100 0 0 0
1 BANANA COMPANY B GOLD LTD 200 0 0 0
2 ORANGE COMPANY C GAS LTD 300 0 0 0
3 APPLE COMPANY A GAS LTD 400 0 0 0

如何根据 NAME 和列名中的值查找列 STOCKS 中的值?例如,对于 OIL LTD 列中的第一个值,它在 NAMEOIL LTD 列中搜索 APPLE COMPANY A (基于具有相同名称的列)在 INVESTMENTS 列中,它给出了值 100 并且可以在下面看到。因此,它搜索的值来自列名称 OIL LTDGOLD LTDGAS LTD 等,基于 中的值姓名投资

我希望输出看起来像这样:

               NAME INVESTMENTS  STOCKS  OIL LTD  GOLD LTD  GAS LTD
0 APPLE COMPANY A OIL LTD 100 100 0 400
1 BANANA COMPANY B GOLD LTD 200 0 200 0
2 ORANGE COMPANY C GAS LTD 300 0 0 300
3 APPLE COMPANY A GAS LTD 400 0 0 400

如果我想查找一个值,我通常会使用 pd.merge(),但不确定它是否适用于两个值。它适用于 Excel,但每列运行该函数需要 15 分钟,效率不高。

最佳答案

如果最后一列仅由 0 填充,解决方案是 pivot,然后删除列和最后一个连接:

df1 = df.pivot('NAME','INVESTMENTS','STOCKS').fillna(0).astype(int)
df = df.drop(df1.columns, axis=1).join(df1, on='NAME')
print (df)
NAME INVESTMENTS STOCKS GAS LTD GOLD LTD OIL LTD
0 APPLE COMPANY A OIL LTD 100 400 0 100
1 BANANA COMPANY B GOLD LTD 200 0 200 0
2 ORANGE COMPANY C GAS LTD 300 300 0 0
3 APPLE COMPANY A GAS LTD 400 400 0 100

如果列的顺序与原始 DataFrame 中的顺序相同:

cols = df.columns.drop(['NAME','INVESTMENTS','STOCKS'])
df1 = df.pivot('NAME','INVESTMENTS','STOCKS').fillna(0).astype(int)[cols]
df = df.drop(df1.columns, axis=1).join(df1, on='NAME')
print (df)
NAME INVESTMENTS STOCKS OIL LTD GOLD LTD GAS LTD
0 APPLE COMPANY A OIL LTD 100 100 0 400
1 BANANA COMPANY B GOLD LTD 200 0 200 0
2 ORANGE COMPANY C GAS LTD 300 0 0 300
3 APPLE COMPANY A GAS LTD 400 100 0 400

关于python - 查找两个值并填写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55216355/

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