Python 熊猫-重塑
您能否帮助我从以下内容重塑熊猫数据帧:Python 熊猫-重塑,python,pandas,transform,reshape,Python,Pandas,Transform,Reshape,您能否帮助我从以下内容重塑熊猫数据帧: df = pd.DataFrame({ 'Clasif1': [np.NaN, np.NaN, 'PRE', 'POST'], 'Currency': [np.NaN, np.NaN, 'LC', 'USD'], 'Unnamed: 1': ['A','01/01/2018',1,7], 'Unnamed: 2': ['A','02/01/2018',2,8], 'Unnamed: 3': ['A','03/01/2018',3,9], 'Unnamed:
df = pd.DataFrame({
'Clasif1': [np.NaN, np.NaN, 'PRE', 'POST'],
'Currency': [np.NaN, np.NaN, 'LC', 'USD'],
'Unnamed: 1': ['A','01/01/2018',1,7],
'Unnamed: 2': ['A','02/01/2018',2,8],
'Unnamed: 3': ['A','03/01/2018',3,9],
'Unnamed: 4': ['B','01/01/2018',4,10],
'Unnamed: 5': ['B','02/01/2018',5,11],
'Unnamed: 6': ['B','03/01/2018',6,12]
})
为此:
df_result = pd.DataFrame({
'Clasif1': ['PRE', 'POST','PRE', 'POST','PRE', 'POST','PRE', 'POST','PRE', 'POST','PRE', 'POST'],
'Currency': ['LC', 'USD','LC', 'USD','LC', 'USD','LC', 'USD','LC', 'USD','LC', 'USD'],
'A/B': ['A','A','A','A','A','A','B','B','B','B','B','B'],
'Date': ['01/01/2018','01/01/2018','02/01/2018','02/01/2018','03/01/2018','03/01/2018','01/01/2018','01/01/2018','02/01/2018','02/01/2018','03/01/2018','03/01/2018'],
'Value': [1,7,2,8,3,9,4,10,5,11,6,12]
})
结果DataFrame行顺序无需与预期匹配
感谢您的帮助,这更像是一个自定义解决方案,但如果您能确保数据与此结构类似,则可以使用
堆栈
s=df.iloc[:,2:].T.set_index([0,1]).stack()
s=s.to_frame('V').reset_index(level=[0,1])
s=s.join(df.iloc[:,:2]).sort_values([0,1])
s
Out[226]:
0 1 V Clasif1 Currency
2 A 01/01/2018 1 PRE LC
3 A 01/01/2018 7 POST USD
2 A 02/01/2018 2 PRE LC
3 A 02/01/2018 8 POST USD
2 A 03/01/2018 3 PRE LC
3 A 03/01/2018 9 POST USD
2 B 01/01/2018 4 PRE LC
3 B 01/01/2018 10 POST USD
2 B 02/01/2018 5 PRE LC
3 B 02/01/2018 11 POST USD
2 B 03/01/2018 6 PRE LC
3 B 03/01/2018 12 POST USD
同上,@Wen在这个问题上,这是一个非常定制的数据帧解决方案:
colindx=pd.MultiIndex.from_arrays(df.iloc[0:2,2:].values)
df_out = df.iloc[2:,:].set_index(['Clasif1','Currency'])
df_out.columns = colindx
df_out.reset_index().melt(id_vars=['Clasif1','Currency'])
输出:
Clasif1 Currency variable_0 variable_1 value
0 PRE LC A 01/01/2018 1
1 POST USD A 01/01/2018 7
2 PRE LC A 02/01/2018 2
3 POST USD A 02/01/2018 8
4 PRE LC A 03/01/2018 3
5 POST USD A 03/01/2018 9
6 PRE LC B 01/01/2018 4
7 POST USD B 01/01/2018 10
8 PRE LC B 02/01/2018 5
9 POST USD B 02/01/2018 11
10 PRE LC B 03/01/2018 6
11 POST USD B 03/01/2018 12
你能把输入和输出作为表格放在正文中吗?很难在图像之间来回切换。还有,你试过什么了?谢谢@Wen,我选择了另一个,因为如果有人读的话会更清楚。我相信你也是赖特。@CristianSaavedraDesmoineaux别担心,很高兴与Hanks Scott合作,类似于我的想法,但我不知道如何处理数据帧中的两个索引。@CristianSaavedraDesmoineaux不客气。快乐编码。