我想为我的数据框中的每个浮点创建百分比更改列,并且每次都使用初始列的名称和“_change”上的添加将其存储在newn列中
我尝试了这个,但似乎没有任何想法?
for col in df.columns:
if df[col].dtypes == "float":
df[ col&'_change'] = (df.col - df.groupby(['New_ID']).col.shift(1))/ df.col
例如,如果我的列是df [“Expenses”]我想保存df中的百分比变化[“Expenses_change”] 编辑添加示例数据框和输出
df最初
Index ID Reporting_Date Sales_Am Exp_Am
0 1 01/01/2016 1000 900
1 1 02/01/2016 1050 950
2 1 03/01/2016 1060 960
3 2 01/01/2016 2000 1850
4 2 02/01/2016 2500 2350
4 2 03/01/2016 3000 2850
循环之后
Index ID Reporting_Date Sales_Am Sales_Am_chge Exp_Am Exp_Am_chge
0 1 01/01/2016 1000 Null 900 Null
1 1 02/01/2016 1050 5% 950 6%
2 1 03/01/2016 1060 1% 960 1%
3 2 01/01/2016 2000 Null 1850 Null
4 2 02/01/2016 2500 25% 2350 27%
4 2 03/01/2016 3000 20% 2850 21%
请记住,我的数据框上有两列以上。
答案 0 :(得分:4)
答案 1 :(得分:3)
你为什么使用'&'
代替'+'df[ col&'_change']
答案 2 :(得分:2)
正如在其他答案中提到的那样,只需改变& for +应该这样做。我在使用点而不是方括号时遇到了问题,所以我也改了它们。
此代码已经在Python 3中进行了测试,它可以工作:)
for col in df.columns:
if df[col].dtypes == "float":
df[col+'_change'] = (df[col] - df.groupby(['repeat_present'])[col].shift(1))/ df[col]
享受!