我编写了一个excel文件,其中一列的值为:
col1
22125051|2/136|Possible Match
nan|3/4|Not Match
22125051|1/26|Match
这些数据最初位于不同的列中但是我想获取所述列的值并将数据放入一个,我使用.apply()和.join()来完成它然后我添加了一个分隔符|分开值
现在我想按每个值拆分列,然后将其放入现有.xlsx文件中的特定列。
说df3 = pd.read_excel('type_primary_data.xlsx')
和.columns [37],。column [39],。column [40]
svc_no port Result
22125051 2/136 Possible Match
nan 3/4 Not Match
22125051 1/26 Match
我不确定在熊猫中做到这一点的最佳方式是什么。
证明我需要将adsl列与现有的.xlsx文件相匹配 所以,当adsl与上述列匹配时,我也想获得svc_no和比较结果以及匹配的adsl。
adsl svc_no port Result
3/4 nan 3/4 Not Match
1/26 22125051 1/26 Match
2/136 22125051 2/136 Possible Match
答案 0 :(得分:0)
尝试使用df.str.split方法:
df =df[col1].str.split('|', expand=True)
然后,重命名comlumns,因为它们将是数字:
df.rename(columns={'oldname':'newname'}
试试吧。我不能因为声誉而发表评论,但我认为这就是你要找的东西。
答案 1 :(得分:0)
我很喜欢extract
使用regex
模式中的命名
pat = '(?P<svc_no>.*)\|(?P<port>.*)\|(?P<Result>.*)'
df.col1.str.extract(pat, expand=True)
svc_no port Result
0 22125051 2/136 Possible Match
1 nan 3/4 Not Match
2 22125051 1/26 Match
cols = dict(enumerate('svc_no port Result'.split()))
df.col1.str.extractall('([^|]+)')[0].unstack().rename(columns=cols)
match svc_no port Result
0 22125051 2/136 Possible Match
1 nan 3/4 Not Match
2 22125051 1/26 Match