复制单元格中上一列的值

2024-05-13 00:31:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经为现金计划创建了df: 列=月, 索引=项目

我想把一个公式放在一行,乘以上个月的值,并将这个值一直带到年底

我看到了一些使用shift()的示例,但它们只复制一次值,我希望在整个月份范围内复制它

columns = ['May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
index = ['Current account', 'Customer payments', 'Salaries', 'Balance']
df = pd.DataFrame(index=index,columns=columns)
df = df.fillna(0) 
df.loc['Customer payments','May']= 111111
df.loc['Customer payments','June':'December']=df.loc['Customer payments'].shift()*0.7
df

我尝试过其他一些选择,如:

shift(-1)

循环:

for i in range(0,5):
    df.loc['Customer payments','June':'December']=df.loc['Customer payments'].shift(-1)*0.7`

列范围:

df.loc['Customer payments','June':'December'] = df.loc['June':'December'].shift()*0.7`

但无济于事


Tags: columns项目示例dfindexshiftcustomerloc
1条回答
网友
1楼 · 发布于 2024-05-13 00:31:44

试试这个

col_vals = {'May':[1,1,1,1], 'June': [2,2,2,2], 'July': [3,3,3,3], 'August': [4,4,4,4], 
            'September': [5,5,5,5], 'October': [6,6,6,6], 'November': [7,7,7,7], 
            'December': [8,8,8,8]}
index = ['Current account', 'Customer payments', 'Salaries', 'Balance']
df = pd.DataFrame(col_vals, index=index)
df
                    May   June  July August September   October   November  December
Current account     1      2     3      4       5          6         7          8
Customer payments   1      2     3      4       5          6         7          8
Salaries            1      2     3      4       5          6         7          8
Balance             1      2     3      4       5          6         7          8

要在5月份将一行乘以0.7*的值:

df.loc['Customer payments', 'June' :] = df.loc['Customer payments', 'May']*0.7
df
                    May   June  July August September   October   November  December
Current account     1      2     3      4       5          6         7          8
Customer payments   1     0.7   0.7    0.7     0.7        0.7       0.7        0.7
Salaries            1      2     3      4       5          6         7          8
Balance             1      2     3      4       5          6         7          8

以滚动窗口方式将从5月开始的每列乘以0.7:

df = df.loc[:, 'May' :].shift(1, axis=1)*0.7
df
                    May   June  July August September   October   November  December
Current account     NaN    0.7  1.4    2.1    2.8         3.5       4.2         4.9
Customer payments   NaN    0.7  1.4    2.1    2.8         3.5       4.2         4.9
Salaries            NaN    0.7  1.4    2.1    2.8         3.5       4.2         4.9
Balance             NaN    0.7  1.4    2.1    2.8         3.5       4.2         4.9

相关问题 更多 >