首页 > 解决方案 > 在数据框中按 vs. 拆分列并获得 2 列作为结果

问题描述

在此处输入图像描述

我正在尝试将一列分成两列:

我的数据框看起来像:

第一张桌子

Value   
4 vs. 6
4 vs. 7 
1 vs. 3
5 
6 vs. 5
6
3 

我想用 vs. 分割 Value 列:

我试过了:

dataframe[['Today', 'Yesterday']] = dataframe["Value"].str.split("vs.", expand=True)

我有以下输出:

Value        
4 vs. 6         
4 vs. 7            
1 vs. 3      
5           
6 vs. 5      
6            
3

Today
4
4
1
0
6
0
0

Yesterday
6
7
3
0
5
0
0

当没有 vs 时,我不会期望 0 值。

我想要的是:

第三张桌子

Value        
4 vs. 6         
4 vs. 7            
1 vs. 3      
5           
6 vs. 5      
6            
3            

Today
4
4
1
5
6
6
3

Yesterday
6 
7 
3 
5 
5 
6 
3

感谢您的任何建议。

标签: python

解决方案


或这个:

// your dataframe
df = pd.DataFrame(["4 vs. 6", "4 vs. 7", "1 vs. 3","5", "6 vs. 5", "6", "3"], columns=["values"])

def getToday(string):
    if "vs" in string:
        return string.split("vs.")[0].strip()
    else:
        return string.strip()

def getYesterday(string):
    if "vs" in string:
        return string.split("vs.")[1].strip()
    else:
        return string.strip()

df["yesterday"] = df["values"].apply(getYesterday)

df["today"] = df["values"].apply(getToday)

推荐阅读