问题
I am new to pandas .I want the a table in a format which I need to export csv.
What I have tried is:
o_rg,o_gg,a_rg,a_gg are arrays
  df1=pd.DataFrame({'RED':o_rg,'GREEN':o_gg})
  df2=pd.DataFrame({'RED':a_rg,'RED':a_gg})
  df=df1-(df2)
  pop_complete = pd.concat([df, df1, df2], keys=["O-A", "O", "A"], axis=1)
  pop_complete.index = ['A1','A3','A8']
  df1 = pop_complete.stack(0)[['RED','GREEN']].reindex(["O", "A", "O-A"], axis=0, level=1)
  df1.to_csv("OUT.CSV")
What I get the output as:
       RED     GREEN       
    A1 O        14.0     14.0
       A        14.0     12.0
       O-A      0.0      2.0
    A3 O        12.0     9.0
       A        12.0     10.0
       O-A      0.0      -1.0
    A8 O        15.0     12.0
       A        15.0     12.0
       O-A      0.0      0.0
What I actually want is:
                RED     GREEN       
       A1
       O        14.0     14.0
       A        14.0     12.0
       O-A      0.0      2.0
       A3
       O        12.0     9.0
       A        12.0     10.0
       O-A      0.0      -1.0
       A8
       O        15.0     12.0
       A        15.0     12.0
       O-A      0.0      0.0
where 'A1','A3','A8' ... can be stored in array cases=[] How to get the actual output?
回答1:
Use custom functions:
#from previous answer
df1 = pop_complete.stack(0)[['RED','GREEN']].reindex(["O", "A", "O-A"], axis=0, level=1)
print (df1)
        RED  GREEN
A1 O     14     14
   A     14     14
   O-A    0      0
A3 O     12      9
   A     12     10
   O-A    0     -1
A8 O     15     12
   A     15     15
   O-A    0     -3
If need all numeric values:
def f(x):
    df2 = pd.DataFrame(columns=x.columns, 
                       index=pd.MultiIndex.from_tuples([(x.name, x.name)]))
    return df2.append(x)
df3 = df1.groupby(level=0, group_keys=False).apply(f).reset_index(level=0, drop=True)
print (df3)
     RED GREEN
A1   NaN   NaN
O     14    14
A     14    14
O-A    0     0
A3   NaN   NaN
O     12     9
A     12    10
O-A    0    -1
A8   NaN   NaN
O     15    12
A     15    15
O-A    0    -3
If need empty strings:
def f(x):
    df2 = pd.DataFrame('', columns=x.columns, 
                       index=pd.MultiIndex.from_tuples([(x.name, x.name)]))
    return df2.append(x)
df3 = df1.groupby(level=0, group_keys=False).apply(f).reset_index(level=0, drop=True)
print (df3)
    RED GREEN
A1           
O    14    14
A    14    14
O-A   0     0
A3           
O    12     9
A    12    10
O-A   0    -1
A8           
O    15    12
A    15    15
O-A   0    -3
来源:https://stackoverflow.com/questions/57667106/how-to-get-a-table-in-a-format-using-pandas-and-export-to-csv