通过逗号和数据透视表解析数据框列 - python

Bri*_*ian 6 python parsing pivot pandas

我正在尝试通过逗号解析出一列(也去除空白),然后将所有源/目标组合旋转到新行中。以下是数据示例:

Origin     Destination     Weight
PVG        AMS, FRA        10,000
CAN, XMN   LAX, ORD        25,000
Run Code Online (Sandbox Code Playgroud)

我在使用 pd.read_clipboard 重现上面的数据帧时遇到问题,所以这里是数据帧代码:

df = pd.DataFrame({'Origin': ['PVG', 'CAN, XMN'], 
                   'Destination': ['AMS, FRA', 'LAX, ORD'],
                   'Weight': [10000, 25000]})
Run Code Online (Sandbox Code Playgroud)

所需的输出是:

Origin     Destination     Weight
PVG        AMS             10,000
PVG        FRA             10,000
CAN        LAX             25,000   
CAN        ORD             25,000
XMN        LAX             25,000
XMN        ORD             25,000   
Run Code Online (Sandbox Code Playgroud)

我一直在尝试使用:

df['Origin'].str.split(',', expand = True)
Run Code Online (Sandbox Code Playgroud)

我曾尝试为起点和终点执行此操作,这适用于将字符串解析为单独的列。我正在努力将所有可​​能的组合创建到单独的行中(我尝试使用 pivot_table 并且没有运气而融化)。

jez*_*ael 4

使用itertools.productwith list comprehenion,仅首先使用以下创建列表applymap

from  itertools import product

df1 = df.applymap(lambda x: x.split(', ') if isinstance (x, str) else [x])
df2 = pd.DataFrame([j for i in df1.values for j in product(*i)], columns=df.columns)
print (df2)
  Origin Destination  Weight
0    PVG         AMS   10000
1    PVG         FRA   10000
2    CAN         LAX   25000
3    CAN         ORD   25000
4    XMN         LAX   25000
5    XMN         ORD   25000
Run Code Online (Sandbox Code Playgroud)