Pandas数据帧:您能为列名和/或df值分配标签吗?

时间:2015-12-08 01:30:29

标签: python pandas

以下列方式在pandas中定义数据框时

df = pd.DataFrame([['07-Dec-2015', 1,2],
               ['08-Dec-2015', 3,4],
               ['09-Dec-2015', 5,6]],
             columns=['Date','FR','UK'])
df.set_index('Date')

Out[1]:
             FR UK
Date        
07-Dec-2015  1  2
08-Dec-2015  3  4
09-Dec-2015  5  6

有没有办法为列分配标签(让我们说“国家'”)和另一个数据框值标签(比方说' Hits')。我想让它看起来像这样:

enter image description here

作为旁注:上面附加的img中的数据框创建如下:

df = pd.DataFrame()
df['Date'] = ['07-Dec-2015','07-Dec-2015','08-Dec-2015','08-Dec-2015','09-Dec-2015','09-Dec-2015']
df['Country'] = ['UK','FR','UK','FR','UK','FR']
df['Hits'] = [2,1,4,3,6,5]
df = df.set_index(['Date','Country'])
df.unstack()

然而,这对我的目的来说还不够好,因为在我的python应用程序中,数据帧构造函数正在传递一个numpy数组,而索引arg则传递一个日期时间向量,因此从广义上讲它看起来像:pd.DataFrame(numpy.ndarray, columns=columnNames, index=DatetimeIndex)

提前致谢

1 个答案:

答案 0 :(得分:1)

你可以:

df = pd.DataFrame(np.random.random((10, 2)), index=pd.DatetimeIndex(start=date(2015,1,1), periods=10, freq='D'))
df.index.name = 'Date'
df.columns = pd.MultiIndex.from_product([['Hits'], ['UK', 'FR']], names=['', 'Country'])

请参阅MultiIndex docs