Python pandas 带有变量的 ISIN
Python pandas ISIN with variable
我可以帮忙使用 ISIN pandas 函数。基本上,我需要根据不同的标准按年汇总数据框中的数据。问题是我需要对数据进行许多聚合(例如国家名称、资助计划等)。为了方便起见,我试图在 for 循环中执行此操作。下面是一个简化的例子:
我在这里尝试为每个国家和一对程序(ProgA 或 ProgB)创建一个列表。
aux = EABlock.loc[EABlock["Country"].isin([Ctry]) & EABlock["FundingSource"].isin([Prog]),["2020","2021","2022","2023","2024","2025","2026","2027","2028"]].agg(sum)
其中 Prog = ['ProgA', 'ProgB']
我得到了这个错误的结果(全为零):
2021 0.0
2022 0.0
2023 0.0
2024 0.0
2025 0.0
2026 0.0
2027 0.0
2028 0.0
当我写
aux = EABlock.loc[EABlock["Country"].isin([Ctry]) & EABlock["FundingSource"].isin(["ProgA", "ProgB"]),["2020","2021","2022","2023","2024","2025","2026","2027","2028"]].agg(sum)
我得到正确的结果:
2020 3.000000
2021 323.216667
2022 127.533333
2023 1.500000
2024 -148.000000
2025 -25.083333
2026 -48.133333
2027 -234.033333
2028 0.000000
更令我困惑的是,标准似乎完全相同:
Prog
Out[50]: ['ProgA', 'ProgB']
["ProgA", "ProgB"]
Out[51]: ['ProgA', 'ProgB']
我做错了什么?
不,不一样,如果将列表传递给列表,则输出是嵌套列表:
EABlock["FundingSource"].isin([Prog])
它是一样的:
EABlock["FundingSource"].isin([["ProgA", "ProgB"]])
但是你想要没有 []
的 pass 列表:
EABlock["FundingSource"].isin(Prog)
等于:
EABlock["FundingSource"].isin(["ProgA", "ProgB"])
看看这里的问题,
在第一个片段中,您将 [Prog]
传递给 isin(),这与第二个片段中传递 ["ProgA", "ProgB"]
不同。
解决方案是通过Prog
而不是[]
。
谢谢:)
我可以帮忙使用 ISIN pandas 函数。基本上,我需要根据不同的标准按年汇总数据框中的数据。问题是我需要对数据进行许多聚合(例如国家名称、资助计划等)。为了方便起见,我试图在 for 循环中执行此操作。下面是一个简化的例子:
我在这里尝试为每个国家和一对程序(ProgA 或 ProgB)创建一个列表。
aux = EABlock.loc[EABlock["Country"].isin([Ctry]) & EABlock["FundingSource"].isin([Prog]),["2020","2021","2022","2023","2024","2025","2026","2027","2028"]].agg(sum)
其中 Prog = ['ProgA', 'ProgB']
我得到了这个错误的结果(全为零):
2021 0.0
2022 0.0
2023 0.0
2024 0.0
2025 0.0
2026 0.0
2027 0.0
2028 0.0
当我写
aux = EABlock.loc[EABlock["Country"].isin([Ctry]) & EABlock["FundingSource"].isin(["ProgA", "ProgB"]),["2020","2021","2022","2023","2024","2025","2026","2027","2028"]].agg(sum)
我得到正确的结果:
2020 3.000000
2021 323.216667
2022 127.533333
2023 1.500000
2024 -148.000000
2025 -25.083333
2026 -48.133333
2027 -234.033333
2028 0.000000
更令我困惑的是,标准似乎完全相同:
Prog
Out[50]: ['ProgA', 'ProgB']
["ProgA", "ProgB"]
Out[51]: ['ProgA', 'ProgB']
我做错了什么?
不,不一样,如果将列表传递给列表,则输出是嵌套列表:
EABlock["FundingSource"].isin([Prog])
它是一样的:
EABlock["FundingSource"].isin([["ProgA", "ProgB"]])
但是你想要没有 []
的 pass 列表:
EABlock["FundingSource"].isin(Prog)
等于:
EABlock["FundingSource"].isin(["ProgA", "ProgB"])
看看这里的问题,
在第一个片段中,您将 [Prog]
传递给 isin(),这与第二个片段中传递 ["ProgA", "ProgB"]
不同。
解决方案是通过Prog
而不是[]
。
谢谢:)