删除我之前的特定字符和数字

2024-04-26 01:03:58 发布

您现在位置:Python中文网/ 问答频道 /正文

import pandas as pd
my_df = pd.DataFrame(columns = ['Energy', 'Value Energy'], 
data = [['348kcal/1476kj', '343kcal / 1451kj'], 
['2370 kj / 570 kcal', '86 kcal / 361kj'], 
['168 kcal', '110kcal464kj'], 
['1647 kj / 388 kcal', '441kcal'], 
['348 kcal1476 kj', '28kcal 121kj'], 
['86 kcal 361kj', '2370kj570kcal']])

我的示例如下:

             Energy        Value Energy
 0      348kcal/1476kj  343kcal / 1451kj
 1  2370 kj / 570 kcal   86 kcal / 361kj
 2            168 kcal      110kcal464kj
 3  1647 kj / 388 kcal           441kcal
 4     348 kcal1476 kj      28kcal 121kj
 5       86 kcal 361kj     2370kj570kcal

在上面的示例df中,我想删除它前面的字符串和数字中的kj字符。你知道吗

我希望有以下输出:

              Energy      Value Energy
0             348kcal     343kcal
1            570 kcal     86 kcal
2            168 kcal     110kcal
3            388 kcal     441kcal
4            348 kcal     28kcal
5             86 kcal     570kcal

Tags: columnsimport示例dataframepandasdfdatavalue
3条回答

使用特定regexp替换(在一个过程中):

In [52]: pat = re.compile(r'[\d\s/]*kj[\s/]*')                                                              

In [53]: my_df.apply(lambda s: s.str.replace(pat, ''))                                                      
Out[53]: 
     Energy Value Energy
0   348kcal      343kcal
1  570 kcal      86 kcal
2  168 kcal      110kcal
3  388 kcal      441kcal
4  348 kcal       28kcal
5   86 kcal      570kcal

您可能需要调用apply方法:

my_df.apply(lambda x: x.split('/')[0])

应该为你工作!你知道吗

您可以定义一个函数来清除文本,然后对列使用apply函数。优点是可以根据需要为不同的列定义不同的函数。你知道吗

import pandas as pd
my_df = pd.DataFrame(columns = ['Energy', 'Value Energy'], data = [['348kcal/1476kj', '343kcal / 1451kj'], ['2370 kj / 570 kcal', '86 kcal / 361kj'], ['168 kcal', '110kcal464kj'], ['1647 kj / 388 kcal', '441kcal'], ['348 kcal1476 kj', '28kcal 121kj'], ['86 kcal 361kj', '2370kj570kcal']])

def clean(x):
    return re.search(r'(\d+\s*kcal)', x).group(0)

my_df['Energy'] = my_df['Energy'].apply(clean)
my_df['Value Energy'] = my_df['Value Energy'].apply(clean)

      Energy    Value Energy    
0   348kcal     343kcal 
1   570 kcal    86 kcal 
2   168 kcal    110kcal 
3   388 kcal    441kcal 
4   348 kcal    28kcal  
5   86 kcal     570kcal 

相关问题 更多 >