2024-04-24 22:59:03 发布
网友
从here开始。该解决方案仅适用于一列。如何改进多栏的解决方案。i、 如果我有一个像
df= pd.DataFrame([['a','b'],['b','c'],['c','z'],['d','b']],index=[0,0,1,1])
如何重塑他们
0 1 2 3 0 a b b c 1 c z d b
如果df是
0 1 0 a b 1 c z 1 d b
那么
0 1 2 3 0 a b NaN NaN 1 c z d b
使用flatten/ravel
flatten/ravel
In [4401]: df.groupby(level=0).apply(lambda x: pd.Series(x.values.flatten())) Out[4401]: 0 1 2 3 0 a b b c 1 c z d b
或者,stack
stack
还有,指数不等
In [4435]: df.groupby(level=0).apply(lambda x: x.values.ravel()).apply(pd.Series) Out[4435]: 0 1 2 3 0 a b NaN NaN 1 c z d b
使用groupby+pd.Series+np.reshape:
groupby
pd.Series
np.reshape
df.groupby(level=0).apply(lambda x: pd.Series(x.values.reshape(-1, ))) 0 1 2 3 0 a b b c 1 c z d b
索引数目不等的解决方案-改为调用pd.DataFrame构造函数。在
pd.DataFrame
pd.DataFrame({n: g.values.ravel() for n, g in df.groupby(level=0)}).T 0 1 2 3 0 a b b c 1 c z d b
这里到处都是,我太累了,没法把它弄漂亮
使用
flatten/ravel
或者,
^{pr2}$stack
还有,指数不等
使用
groupby
+pd.Series
+np.reshape
:索引数目不等的解决方案-改为调用
^{pr2}$pd.DataFrame
构造函数。在这里到处都是,我太累了,没法把它弄漂亮
^{pr2}$相关问题 更多 >
编程相关推荐