如何使用 pandas 获取格式的表格并导出到 csv?

Posted

技术标签:

【中文标题】如何使用 pandas 获取格式的表格并导出到 csv?【英文标题】:How to get a table in a format using pandas and export to csv? 【发布时间】:2019-12-31 04:30:48 【问题描述】:

我是 pandas 的新手。我想要导出 csv 格式的表格。

我试过的是:

o_rg,o_gg,a_rg,a_gg 是数组

  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=[] 中 如何得到实际的输出?

【问题讨论】:

您能否在数组中添加一些示例数据,以便我们重现该问题? 【参考方案1】:

使用自定义函数:

#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?的主要内容,如果未能解决你的问题,请参考以下文章

C#winform怎么导出一维码到EXCEL单元格?

python pandas如何查找不同excel表格的数据并对比大小?

如何将access中的数据导出为EXCEL文件?

js导出excel

C#2008报表控件导出excel格式,能实现类似excel中的合并单元格

如何将csv导入mysql和mysql导出csv