Pandas如何转置数据并添加列名

时间:2018-03-07 23:17:57

标签: python pandas

在Pandas我转换数据并想要命名列。

我目前的数据是:

Dict = {}
Instances = [/* an array of items where items is a dictionary that contains data */]
Instances.map((item) => {
      Dict[item.name] = item.url;
});

转置并重命名列后,输出为:

    alpha   bravo    charlie
0   public  private  public
1   prodA   prodB    prodB
2   100     200      300

我如何获得预期的输出,如:

df.transpose()
df.columns = ["category", "product", "price"]

    category    product price
alpha   public  prodA   100
bravo   private prodB   200
charlie public  prodB   300

3 个答案:

答案 0 :(得分:3)

首先设置索引,然后再设置数据框

df.index = pd.Index(['category','product','price'],name='company')
df.T

company category product price
alpha     public   prodA   100
bravo    private   prodB   200
charlie   public   prodB   300

答案 1 :(得分:1)

您可以使用rename_axis和reset_index:

(
    df.T
    .set_axis(["category", "product", "price"], axis=1, inplace=False)
    .rename_axis('company',axis=0)
    .reset_index()
)

Out[124]: 
   company category product price
0    alpha   public   prodA   100
1    bravo  private   prodB   200
2  charlie   public   prodB   300

如果您想将公司作为索引:

(
    df.T
    .set_axis(["category", "product", "price"], axis=1, inplace=False)
    .rename_axis('company',axis=0)
)
Out[125]: 
        category product price
company                       
alpha     public   prodA   100
bravo    private   prodB   200
charlie   public   prodB   300

答案 2 :(得分:1)

首先通过df.index.set_names设置索引名称,然后应用reset_index

df.index = df.index.set_names('company')
df.columns = ['category', 'product', 'price']
df = df.reset_index()

#    company category product price
# 0    alpha   public   prodA   100
# 1    bravo  private   prodB   200
# 2  charlie   public   prodB   300