【发布时间】:2015-06-09 17:56:42
【问题描述】:
在我的项目中,我使用空的 pandas 数据框初始化了一个对象。在这个对象的一个方法中,我创建了另一个具有多级列的数据框。此外,我将第二个数据框与空数据框合并,我希望合并后的数据框也有一个多级列,但多级列将转换为具有我的级别元组的单级列。那么如何在我的新数据框中保留多级列?
一个最小的工作示例:import pandas as pd
tuples = [(u'obs', u'TMP2m')]
col = pd.MultiIndex.from_tuples(tuples, names=['product', 'variable'])
data = pd.DataFrame()
data1 = pd.DataFrame([1,2,3],columns = col)
data = pd.merge(data, data1, left_index=True, right_index=True, how='outer')
print data
我得到这个输出:
+----------------------+
| |(obs, TMP2m) |
+----------------------+
| 0 | 1 |
| 1 | 2 |
| 2 | 3 |
+----------------------+
但我希望得到这样的输出:
+------------------+
| product | obs |
+------------------+
| variable | TMP2m |
+------------------+
| 0 | 1 |
| 1 | 2 |
| 2 | 3 |
+------------------+
附言我正在使用 Python 2.7.6 和 pandas 0.16.0
修正后的 mwe:
import pandas as pd
class time_series( object ):
def __init__( self ):
self.data = pd.DataFrame()
def add_series ( self, series_data, var ):
tuples = [(u'obs', var)]
col = pd.MultiIndex.from_tuples(tuples, names=['product', 'variable'])
data1 = pd.DataFrame(series_data, columns = col)
self.data = pd.merge(self.data, data1, left_index=True, right_index=True, how='outer')
【问题讨论】:
标签: python python-2.7 pandas merge multi-level