Python 检查单列的单元格,如果它们满足特定条件,使用Pandas对其应用公式?
在CSV文件中执行一些数据清理。我想把一些CSV数据转换成HTML,然后再上传到网站上 我将在一个数据框中遍历名为“详细信息”列中的每个单元格 如果单元格以以下字符组合开头:\r\n\t,则我要将其替换为:Python 检查单列的单元格,如果它们满足特定条件,使用Pandas对其应用公式?,python,pandas,dataframe,replace,data-cleaning,Python,Pandas,Dataframe,Replace,Data Cleaning,在CSV文件中执行一些数据清理。我想把一些CSV数据转换成HTML,然后再上传到网站上 我将在一个数据框中遍历名为“详细信息”列中的每个单元格 如果单元格以以下字符组合开头:\r\n\t,则我要将其替换为: df2=df.copy() def启动时更换(x、a、b): 如果x.startswith(a): x、 更换(a、b) df2['Details']=df2['Details']。 应用(lambda x:startswith_replace(x,'\\r\\r\\n\\t','\\'))
df2=df.copy()
def启动时更换(x、a、b):
如果x.startswith(a):
x、 更换(a、b)
df2['Details']=df2['Details']。
应用(lambda x:startswith_replace(x,'\\r\\r\\n\\t','\\'))
但是,当我运行此命令时,“详细信息”列中的每个单元格都会替换为“无”作为其值。这可以使用内置函数来完成,而无需定义自己的函数,只需一点正则表达式 (
^
仅检查字符串的开头,以及()
可选地将其设置为捕获组,但如果您决定替换所有出现的内容,则可以省略这两个选项,并传递原始字符串)
df
细节
0 1 2 3\r\r\n\t
1 4 5 6 lkjn\r\n\t
2 7 8 9 abcdefg
df['Details']=df['Details'].str.replace(r'^(\r\r\n\t)“,\\”)
细节
0 1 2 3 \\
1 4 5 6 lkjn\r\n\t
2 7 8 9 abcdefg
函数没有return
语句,因此隐式返回None
,请参阅
df2 = df.copy()
def startswith_replace (x, a, b):
if x.startswith(a):
x.replace(a, b)
df2['Details'] = df2['Details'].
apply(lambda x: startswith_replace(x, '\\r\\r\\n \\t', '\<ul\>\<li\>'))
df
A B A Details
0 1 2 3 \r\r\n \t
1 4 5 6 lkjn \r\r\n \t
2 7 8 9 abcdefg
df['Details']=df['Details'].str.replace(r'^(\r\r\n \t)','\<ul\>\<li\>')
A B A Details
0 1 2 3 \<ul\>\<li\>
1 4 5 6 lkjn \r\r\n \t
2 7 8 9 abcdefg