Skip to main content
 首页 » 编程设计

python之Pandas :拆分数据框行并重新排列列值

2025年05月04日14oomusou

我有一个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