从DataFrame列中删除字符串

2024-10-05 17:37:12 发布

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

我有一个熊猫数据帧,如下所示。你知道吗

DF1 =

sid                 path
 1    '["rome","is","in","province","lazio"]'   
 1    "['rome', 'is', 'in', 'province', 'naples']"
 1     ['N']
 1    "['rome', 'is', 'in', 'province', 'in', 'campania']"
 ....

我想删除列path中所有不必要的字符,因此结果如下所示:

DF2 =

    sid                  path
     1         rome is in province lazio
     1         rome is in province naples
     1                    N
     1         rome is in province in campania
 ....

我试着替换所有不必要的字符如下:

 DF1["path"].replace("[","").replace("]","").replace('"',"").replace(","," ").replace("'","")

但没用。我想这是由于条目["N"]

我该怎么做?感谢您的帮助!你知道吗


Tags: 数据pathinis条目字符replacedf1
2条回答

您可以使用ast.literal_eval安全地读取作为字符串输出的列表。解释真实列表的一种方法是捕获ValueError。你知道吗

请注意,如果可能的话,您应该尝试在这些问题到达您的数据帧之前对它们进行上游排序。你知道吗

from ast import literal_eval

df = pd.DataFrame({'sid': [1, 1, 1, 1],
                   'path': ['["rome","is","in","province","lazio"]',
                            "['rome', 'is', 'in', 'province', 'naples']",
                            ['N'],
                            "['rome', 'is', 'in', 'province', 'in', 'campania']"]})

def converter(x):
    try:
        return ' '.join(literal_eval(x))
    except ValueError:
        return ' '.join(x)

df['path'] = df['path'].apply(converter)

print(df)

                              path  sid
0        rome is in province lazio    1
1       rome is in province naples    1
2                                N    1
3  rome is in province in campania    1

使用ast.literal_eval&;str.join

演示:

import pandas as pd
import ast
df = pd.DataFrame({"path": ['["rome","is","in","province","lazio"]', "['rome', 'is', 'in', 'province', 'naples']", ['N']]})
df['path'] = df['path'].astype(str).apply(ast.literal_eval).apply(lambda x: " ".join(x))
print(df)

输出:

                         path
0   rome is in province lazio
1  rome is in province naples
2                           N

相关问题 更多 >