Dataframe 使用附加列从宽到长转换和重塑数据帧
我有一个数据帧,我想从宽格式转换成长格式。但我不想使用所有列。Dataframe 使用附加列从宽到长转换和重塑数据帧,dataframe,indexing,pivot,melt,Dataframe,Indexing,Pivot,Melt,我有一个数据帧,我想从宽格式转换成长格式。但我不想使用所有列。 具体地说,我想融合以下数据帧 import pandas as pd data = {'year': [2014, 2018,2020,2017], 'model':[12, 14,21,8], 'amount': [100, 120,80,210], 'quality': ["low", "high","medium",&
具体地说,我想融合以下数据帧
import pandas as pd
data = {'year': [2014, 2018,2020,2017],
'model':[12, 14,21,8],
'amount': [100, 120,80,210],
'quality': ["low", "high","medium","high"]
}
# pass column names in the columns parameter
df = pd.DataFrame.from_dict(data)
print(df)
在此数据框中:
data2 = {'year': [2014, 2014, 2018, 2018, 2020, 2020, 2017, 2017],
'variable': ["model", "amount", "model", "amount", "model", "amount", "model", "amount"],
'value':[12, 100, 14, 120, 21, 80, 8, 210],
'quality': ["low", "low", "high", "high", "medium", "medium", "high", "high"]
}
# pass column names in the columns parameter
df2 = pd.DataFrame.from_dict(data2)
print(df2)
我用不同的输入参数组合尝试了pd.melt(),如果我不考虑柱的质量,它会以某种方式工作。但根据结果,我不能跳过质量栏。此外,我还尝试了df.pivot()、df.pivot_table()和pd.wide_to_long()。都有好几种组合。但不知何故,我没有得到预期的结果。在执行任何pd.melt()操作之前,将列year和quality放入数据框索引可能会有所帮助
非常感谢您事先的帮助
import pandas as pd
data = {'year': [2014, 2018,2020,2017],
'model':[12, 14,21,8],
'amount': [100, 120,80,210],
'quality': ["low", "high","medium","high"]
}
# pass column names in the columns parameter
df = pd.DataFrame.from_dict(data)
print(df)
data2 = {'year': [2014, 2014, 2018, 2018, 2020, 2020, 2017, 2017],
'variable': ["model", "amount", "model", "amount", "model", "amount", "model", "amount"],
'value':[12, 100, 14, 120, 21, 80, 8, 210],
'quality': ["low", "low", "high", "high", "medium", "medium", "high", "high"]
}
# pass column names in the columns parameter
df2 = pd.DataFrame.from_dict(data2)
print(df2)
df3 = pd.melt(df, id_vars=['year', 'quality'], var_name='variable', value_name='value')
df3 = df3[['year', 'variable', 'value', 'quality']]
df3.sort_values('year', inplace=True)
print(df3)
输出(对于df3):
year variable value quality
0 2014 model 12 low
4 2014 amount 100 low
3 2017 model 8 high
7 2017 amount 210 high
1 2018 model 14 high
5 2018 amount 120 high
2 2020 model 21 medium
6 2020 amount 80 medium