我有一个DataFrame
:
import pandas as pd
df = pd.DataFrame({'Board': ['A', 'B'], 'Off': ['C', 'D'], 'Stops': ['Q/W/E', 'Z'], 'Pax': [10, 100]})
看起来像:
Board Off Pax Stops
0 A C 10 Q/W/E
1 B D 100 Z
我想要一个 DataFrame
按 Stops
列拆分并重新排列为 Board
和 Off
具有 Pax
值的行被复制如下;
Board Off Pax
0 A Q 10
1 Q W 10
2 W E 10
3 E C 10
4 B Z 100
5 Z D 100
如有任何帮助,我们将不胜感激。
分解步骤
df['New']=df[['Board','Stops','Off']].apply(lambda x : '/'.join(x),1)
df['New2']=df['New'].str.split('/').apply(lambda x : list(zip(x[:-1],x[1:])))
namedict = {0 : 'Board',1:'Off'}
df[['Pax','New2']].set_index('Pax').New2.apply(pd.Series).\
stack().apply(pd.Series).reset_index().\
drop('level_1',1).rename(columns=namedict)
Out[1260]:
Pax Board Off
0 10 A Q
1 10 Q W
2 10 W E
3 10 E C
4 100 B Z
5 100 Z D
我是一名优秀的程序员,十分优秀!