我有一个看起来像这样的数据框
brand|1 |2 |3
---------------
a |a1|a2|a3
b |b1|b2|b3
我希望结果数据框看起来像这样
brand|rank|value
----------------
a |1 |a1
a |2 |a2
a |3 |a3
b |1 |b1
b |2 |b2
b |3 |b3
我尝试过pandas融化功能,但它对我不起作用,因为a1,a2,... b3都是字符而不是数字。 我想知道如何在python中做到这一点。
答案 0 :(得分:1)
#Create example dataframe
a = {'a':['a1','a2','a3'],'b':['b1','b2','b3']}
df = pd.DataFrame.from_dict(a)
df = df.T
df = df.reset_index()
df.columns = ['brand','1','2','3']
要在演示时进行转换,请尝试:
pd.melt(df, id_vars =['brand'])
答案 1 :(得分:1)
1)使用_CustomerLicense.SelectedFeatures =_CustomerLicense.Features.Where(x => FeaturesIds.Contains(x.FeatureId)).Cast<object>().ToList();
和set_index
stack
2)使用In [429]: (df.set_index('brand').stack()
.reset_index(name='value')
.rename(columns={'level_1': 'rank'}))
Out[429]:
brand rank value
0 a 1 a1
1 a 2 a2
2 a 3 a3
3 b 1 b1
4 b 2 b2
5 b 3 b3
melt