如何使用 pandas 获取格式的表并导出到csv? [英] How to get a table in a format using pandas and export to csv?

查看:90
本文介绍了如何使用 pandas 获取格式的表并导出到csv?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是熊猫新手.我想要一张表格,该表格需要导出csv格式.

I am new to pandas .I want the a table in a format which I need to export csv.

我尝试过的是:

o_rg,o_gg,a_rg,a_gg是数组

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")

我得到的输出为:

       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

我真正想要的是:

                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

其中'A1','A3','A8'...可以存储在数组case = []中 如何获得实际输出?

where 'A1','A3','A8' ... can be stored in array cases=[] How to get the actual output?

推荐答案

使用自定义功能:

#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

如果需要所有数值:

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

如果需要空字符串:

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

这篇关于如何使用 pandas 获取格式的表并导出到csv?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆