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 并且没有运气而融化)。
使用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)
| 归档时间: |
|
| 查看次数: |
1091 次 |
| 最近记录: |