微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – Pandas一行pitvot表返回一个系列而不是数据框

取决于用户输入我们生成pandas数据透视表.有一种特殊情况,在列中只有一个属性.由于数据透视表而不是数据框,因此生成类型系列的数据对象,因此我必须以不同的方式访问它(IE.下面).有没有办法,如何独立于列中的属性数得到相同的结果?

import pandas as pd

data = {'attr1': {0: 2, 1: 1, 2: 14}, 'attr2': {0: 0, 1: 1, 2: 2},'metric1': {0: 3834557.25999999998, 1: 13251194.440, 2: 2868778.53}, 'metric2': {0: 7.2, 1: 4.0, 2: 7.5}}

df = pd.DataFrame(data)

tab1 = df.pivot_table(index=[], columns=["attr1"], values=['metric1', 'metric2'])  
if isinstance(tab1, pd.Series):
    tab1 = pd.DataFrame(tab1).T

print tab1.index
print tab1.columns
print tab1

tab2 = df.pivot_table(index=[], columns=["attr1",'attr2'], values=['metric1','metric2'])  
if isinstance(tab2, pd.Series):
    tab2 = pd.DataFrame(tab2).T
print tab2.index
print tab2.columns
print tab2

解决方法:

请注意,pandas 0.18有一个pd.Series.to_frame method.所以,你可以使用

 df\
    .pivot_table(
         index=[], 
         columns=["attr1",'attr2'], 
         values=['metric1','metric2'])\
    .to_frame()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐