python - 通过逗号和枢轴解析数据框列 - python

标签 python pandas parsing pivot

我正在尝试通过逗号解析出一列(同时去除空格),然后将所有起点/终点组合旋转到新行中。这是数据示例:

Origin     Destination     Weight
PVG        AMS, FRA        10,000
CAN, XMN   LAX, ORD        25,000

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

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

期望的输出是:

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   

我一直在尝试使用:

df['Origin'].str.split(',', expand = True)

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

最佳答案

使用itertools.product使用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

关于python - 通过逗号和枢轴解析数据框列 - python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50789834/

相关文章:

python - Python中如何进行C语言计算

python - Pandas dataframe,将列的连续行提取到列表中

python - 在 Pandas 上绘制整行

python dateutil.parser 错误(??)解析

powershell - Powershell:多次解析和复制

python - 创建网络查询表单

Python Pandas 按多个条件过滤列

python - 需要 py-upset 帮助吗?

python - 如何在 pandas 数据框中保留分类变量的某些级别并将剩余设置为 "other"

parsing - 如何解析 WMV (ASF) 文件?找不到数据包的长度