使用逗号解析数据帧列并且进行旋转 - python

2024-07-05 12:59:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用逗号(也去掉空白)来解析一列,然后将所有的源/目标组合旋转到新行中。以下是数据示例:

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

我有麻烦复制上面的数据帧使用pd.read_剪贴板,下面是数据帧代码:

^{pr2}$

预期输出为:

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,但没有成功)。在


Tags: 数据目标origindestinationcan空白ams逗号
2条回答

^{}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

您应该在这里使用itertools.product。在

from itertools import product
df_dict = {
    x[-1]: pd.DataFrame(list(
        product(x[0].split(', '), x[1].split(', ')))
    ) for x in df.values.tolist()
}

df = pd.concat(df_dict).reset_index(level=-1, drop=True).reset_index() 
df.columns = ['Weight', 'Destination', 'Origin']

^{pr2}$

相关问题 更多 >