首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按数据格式拆分列,并得到2列作为结果

按数据格式拆分列,并得到2列作为结果
EN

Stack Overflow用户
提问于 2020-06-22 11:47:02
回答 2查看 42关注 0票数 0

我正试图将一栏分为两栏:

我的数据看起来像:

第一表

代码语言:javascript
复制
Value   
4 vs. 6
4 vs. 7 
1 vs. 3
5 
6 vs. 5
6
3 

我想将值列按vs.s拆分:

我试过:

代码语言:javascript
复制
dataframe[['Today', 'Yesterday']] = dataframe["Value"].str.split("vs.", expand=True)

我有以下输出:

代码语言:javascript
复制
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.v时,我不会期望0值。

我想要的是:

第三表

代码语言:javascript
复制
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

谢谢你的建议。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-22 12:42:04

你可以试试这个,使用apply

代码语言:javascript
复制
dataframe["Value"]=dataframe["Value"].apply(lambda x: x+'vs.'+x if 'vs.' not in x else x)
dataframe[['Today', 'Yesterday']] = dataframe["Value"].str.split("vs.", expand=True)
票数 0
EN

Stack Overflow用户

发布于 2020-06-22 12:45:23

或者这个:

代码语言:javascript
复制
// 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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62513703

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档