pandas数据框融合了字符串值

时间:2017-09-14 13:51:45

标签: python pandas dataframe melt

我有一个看起来像这样的数据框

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中做到这一点。

2 个答案:

答案 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'])

enter image description here

答案 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