在表格中插入总计行,而不使用熊猫,而仅使用循环

时间:2018-11-20 06:20:15

标签: python ironpython spotfire

我有一张这样的桌子-

     Cell Sales Lag
0    -8    1    
1    -8    3    1
2    -8    2    3
3    -7    9    
4    -7    3    9

我要插入一个总计行,该行将每个单元格组的“ Sales”列的最后一个值插入到“ Sales”列中,并为一个单元格组将“ Sales”列的第一个值插入将其插入滞后列。

结果应类似于-

     Cell Sales Lag
0    -8    1    
1    -8    3    1
2    -8    2    3
3    Total 2    1
4    -7    9    
5    -7    3    9
6    Total 3    9

很抱歉,我无法提出任何逻辑来解决此问题。请客气。

1 个答案:

答案 0 :(得分:0)

请记住,在dataframe中插入行效率很低。这是我的处理方法:

import pandas as pd
from io import StringIO

ss = StringIO('''
Index  Cell Sales Lag
0    -8    1    
1    -8    3    1
2    -8    2    3
3    -7    9    
4    -7    3    9
''')

df = pd.read_csv(ss, sep='\s+')
del df['Index']


# Store the firsts
df_first = df.groupby('Cell')['Sales'].first()

# Store the lasts
df_last = df.groupby('Cell')['Sales'].last()

df_new = pd.DataFrame(columns=df.columns)
for row in df_first.index:
    df_temp = df[df.Cell == row]
    df_new = df_new.append(df_temp, ignore_index=True)

    df_insert = pd.DataFrame({df.columns[0]:'Total', 
                             df.columns[1]:df_last.loc[df_last.index==row],
                             df.columns[2]:df_first.loc[df_first.index==row]})
    df_new = df_new.append(df_insert)

它生成所需的输出:

enter image description here