Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫-重塑_Python_Pandas_Transform_Reshape - Fatal编程技术网

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不客气。快乐编码。