python - 如何对列数未定义的数据框进行数学运算?

标签 python pandas dataframe

我有一个数据框,其中有不定数量的列,稍后定义。 像这样:

<表类="s-表"> <头> 索引 国内生产总值 <日>2004 <日>2005年 <日>... <正文> 巴西 1000 0.10 0.10 ... 中国 1000 0.15 0.10 ... 印度 1000 0.05 0.10 ...
df = pd.DataFrame({'index': ['brasil', 'china', 'india'],
                   'GDP': [1000,1000,1000],
                   '2004': [0.10, 0.15, 0.05],
                   '2005': [0.10, 0.10, 0.10]})

作为初始 GDP 的列 GDP,从 2004 年开始的列是 float ,代表百分比,与每年的 GDP 增长有关。

根据初始 GDP,使用百分比得出每年 GDP 的绝对数。我需要这样的数据框:

<表类="s-表"> <头> 索引 国内生产总值 <日>2004 <日>2005年 <正文> 巴西 1000 1100 1210 中国 1000 1150 1265 印度 1000 1050 1155

我尝试使用 itertuples、df.columns 和 for 循环,但我可能遗漏了一些东西。

记住列数是不确定的。

非常感谢您!

最佳答案

我的答案是 Wardy 和 user19* 的组合。

开始于...

df = pd.DataFrame(data={'GDP':   [1000, 1000, 1000],
                        '2004':  [0.10, 0.15, 0.5],
                        '2005':  [0.10, 0.10, 0.10],
                        'index': ['brasil', 'china', 'india']})

找到百分比列并确保它们的顺序正确。

columns_of_interest = sorted(c for c in df.columns if c not in ['GDP', 'index'])

现在我们计算...

running_GDP = df['GDP'] # starting value
for column in columns_of_interest:
    running_GDP *= 1.0 + df[column]
    df[column] = running_GDP

这导致

    GDP     2004    2005    index
0   1000    1100.0  1210.0  brasil
1   1000    1150.0  1265.0  china
2   1000    1500.0  1650.0  india

关于python - 如何对列数未定义的数据框进行数学运算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74748874/

相关文章:

python - 仅使用python中的csv阅读器读取csv文件的前N行

python - 如何将值递减的多行添加到一个系列中

python - 如何使用 Ta-lib 或 Pandas 正确计算股票的 EMA?

python - 在给定行上遇到特定值时的数据框分组

python - 在 Pandas 中查找包含另一列的行中的特定值的列名称

python - 如何重复输入层直到超过一定数量的神经元?

python - 如何为 sklearn 库中的训练模型提供多个输入?

Python:根据日期时间逐行扩展数据框

reshape 没有 “timevar” 的数据帧和多个值列从长格式到宽格式

python - 在 pandas 中拆垛时保持顺序