Python 如何重塑此数据帧
我需要像这样重塑数据帧:Python 如何重塑此数据帧,python,pandas,reshape,Python,Pandas,Reshape,我需要像这样重塑数据帧: nam code date1 date2 0 a 1 1/1 1/2 1 b 3 3/4 4/5 但是在这种情况下,df.stack似乎是无用的 期望输出: nam code date 0 a 1 1/1 1 a 1 1/2 2 b 3 3/4 3 b 3 4/5 您可以使用lreshape,按列nam,列和最后一列: 另一种解决方案是,按列nam删除列变量,
nam code date1 date2
0 a 1 1/1 1/2
1 b 3 3/4 4/5
但是在这种情况下,df.stack
似乎是无用的
期望输出:
nam code date
0 a 1 1/1
1 a 1 1/2
2 b 3 3/4
3 b 3 4/5
您可以使用
lreshape
,按列nam
,列和最后一列:
另一种解决方案是,按列nam
删除列变量
,最后:
编辑:
现在未记录,但将来可能会被删除()
可能的解决方案是将所有3个函数合并为一个-可能是
melt
,但现在还没有实现。也许是新版本的熊猫。然后我的答案将被更新。我不知道lreshape。这是有文档记录的吗?请尝试使用spyder
帮助(pd.lreshape)
,但它还没有很好的文档记录。这肯定比重塑numpy数组并返回数据帧要好。很高兴知道。谢谢。:)根据文档字符串(使用?
):def lreshape(数据、组、dropna=True、label=None):“将长格式数据重塑为宽格式。数据帧的广义逆格式。pivot
@Ivon Ding-如果我的回答有帮助,请不要忘记。谢谢。
print pd.lreshape(df, {'date': ['date1', 'date2']})
.sort_values('nam')
.reindex_axis(['nam','code','date'], axis=1)
.reset_index(drop=True)
nam code date
0 a 1 1/1
1 a 1 1/2
2 b 3 3/4
3 b 3 4/5
print pd.melt(df, id_vars=['nam','code'], value_name='date')
.drop('variable', axis=1)
.sort_values('nam')
.reset_index(drop=True)
nam code date
0 a 1 1/1
1 a 1 1/2
2 b 3 3/4
3 b 3 4/5