所以我在这里遇到了问题:
我有一个熊猫数据框,如下所示:
ID Name Value
0 Peter 21,2
1 Frank 24
2 Tom 23,21/23,60
3 Ismael 21,2/ 21,54
4 Joe 23,1
and so on...
我要尝试的是用斜杠(/)分隔“值”列,但保留所有不具有这种模式的值。
就像这里:
ID Name Value
0 Peter 21,2
1 Frank 24
2 Tom 23,21
3 Ismael 21,2
4 Joe 23,1
我该如何实现?我尝试了str.split方法,但没有给我想要的解决方案。而是返回NaN,如下所示。
My Code: df['Value']=df['value'].str.split('/', expand=True)[0]
Returns:
ID Name Value
0 Peter NaN
1 Frank NaN
2 Tom 23,21
3 Ismael 21,2
4 Joe Nan
我需要的是在'/'出现之前的第一个值。
感谢任何帮助!
答案 0 :(得分:3)
删除expand=True
返回列表,并添加str[0]
选择第一个值:
df['Value'] = df['Value'].str.split('/').str[0]
print (df)
ID Name Value
0 0 Peter 21,2
1 1 Frank 24
2 2 Tom 23,21
3 3 Ismael 21,2
4 4 Joe 23,1
如果性能很重要,请使用列表理解:
df['Value'] = [x.split('/')[0] for x in df['Value']]
答案 1 :(得分:1)
pandas.Series.str.replace
和正则表达式df.assign(Value=df.Value.str.replace('/.*', ''))
ID Name Value
0 0 Peter 21,2
1 1 Frank 24
2 2 Tom 23,21
3 3 Ismael 21,2
4 4 Joe 23,1
(可选)您可以将结果直接分配回数据框
df['Value'] = df.Value.str.replace('/.*', '')