我有一个数据框,其中有不定数量的列,稍后定义。 像这样:
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 的绝对数。我需要这样的数据框:
我尝试使用 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/