目标:将功能放置在Pandas数据框中的给定位置,该功能会随着数据框中的调整而更新
说明:我正尝试从400,000中减去75,000,得出325,000,并将其显示在Pandas datframe中。目前,“结束现金”行为我提供了所有期望的答案。但是,这些是硬编码值,而不是动态值。
import pandas as pd
data_2 = [['Init Cash', 400000, 325000,335000,355000,275000,225000,240000],
['Matur CDs',0,0,0,0,0,0,0],
['Interest',0,0,0,0,0,0,0],
['1-mo CDs',0,0,0,0,0,0,0],
['3-mo CDs',0,0,0,0,0,0,0],
['6-mo CDs',0,0,0,0,0,0,0],
['Cash Uses',75000,-10000,-20000,80000,50000,-15000,60000],
['End Cash', 325000,335000,355000,275000,225000,240000,180000]]
df_2 = pd.DataFrame(data_2,columns=['Month', 'Month 1', 'Month 2', 'Month 3', 'Month 4', 'Month 5', 'Month 6', 'End'])
df_2_copy = df_2.copy()
我认为我可以摆脱类似以下的情况:
df_2_copy.iloc[7]['Month 1'] == (df_2_copy.iloc[0]['Month 1'] - df_2_copy.iloc[6]['Month 1'])
但是,不幸的是,这对我不起作用。
任何帮助将不胜感激。
答案 0 :(得分:1)
按列Month
创建索引,因此可以仅减去按DataFrame.iloc
位置选择的数字列:
df_2_copy = df_2_copy.set_index('Month')
df_2_copy.iloc[7] = df_2_copy.iloc[0] - df_2_copy.iloc[6]
print (df_2_copy)
哪个会产生:
Month 1 Month 2 Month 3 Month 4 Month 5 Month 6 End
Month
Init Cash 400000 325000 335000 355000 275000 225000 240000
Matur CDs 0 0 0 0 0 0 0
Interest 0 0 0 0 0 0 0
1-mo CDs 0 0 0 0 0 0 0
3-mo CDs 0 0 0 0 0 0 0
6-mo CDs 0 0 0 0 0 0 0
Cash Uses 75000 -10000 -20000 80000 50000 -15000 60000
End Cash 325000 335000 355000 275000 225000 240000 180000
另一种解决方案是使用DataFrame.loc
通过标签选择行:
df_2_copy.loc['End Cash'] = df_2_copy.loc['Init Cash'] - df_2_copy.loc['Cash Uses']
如果行不存在,则使用setting with enlargement创建一个新行。