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