如何使用 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?的主要内容,如果未能解决你的问题,请参考以下文章
python pandas如何查找不同excel表格的数据并对比大小?