带有变量的 Python pandas ISIN

标签 python pandas isin

我可以帮助您使用 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"])

关于带有变量的 Python pandas ISIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67885455/

相关文章:

python - 如果数据框A列中的值为空,则将B列中的值写入A列

python - Pandas 在极地的 isin 功能

python - .isin() 比 .query() 快吗

python - 将序号添加到 Pandas 中的 groupby().head(n) 表达式中

python - 序列化 Python 类

python - 我可以确定函数会因键入而引发哪些错误?

python - 如何在列表中运行我的标记器函数 - 模块对象不可调用?

python - 在 Python 3.5.1 中使用变量创建文件时出现 FileNotFoundError

python - 如何替换 Python Pandas 中数据框列中的多个值?