【问题标题】:Python pandas ISIN with variable带有变量的 Python 熊猫 ISIN
【发布时间】:2021-06-08 10:21:16
【问题描述】:

我可以动手使用 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']

我做错了什么?

【问题讨论】:

  • 能否以文本形式发布数据示例,谢谢
  • 问题在于[Prog] ==> [['ProgA', 'ProgB']](嵌套列表)。应该是.isin(Prog) 而不是.isin([Prog])

标签: python pandas isin


【解决方案1】:

不,不一样,如果将列表传递给列表,则输出是嵌套列表:

EABlock["FundingSource"].isin([Prog])

类似:

EABlock["FundingSource"].isin([["ProgA", "ProgB"]])

但是你想要没有[]的通过列表:

EABlock["FundingSource"].isin(Prog)

类似:

EABlock["FundingSource"].isin(["ProgA", "ProgB"])

【讨论】:

    【解决方案2】:

    看到这里的问题, 在第一个 sn-p 中,您将 [Prog] 传递给 isin(),这与在第二个 sn-p 中传递 ["ProgA", "ProgB"] 不同。

    解决方案是通过Prog 而不传递[]

    谢谢你:)

    【讨论】:

      猜你喜欢
      • 2022-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-09
      • 1970-01-01
      • 2022-12-16
      相关资源
      最近更新 更多