使用熊猫从细胞中去除方括号

时间:2019-06-19 14:34:14

标签: regex pandas

我有一个熊猫数据框,其数据如下所示

id, name, date
[101],[test_name],[2019-06-13T13:45:00.000Z]
[103],[test_name3],[2019-06-14T13:45:00.000Z, 2019-06-14T17:45:00.000Z]
[104],[],[]

我正在尝试将其转换为以下格式,没有方括号

预期输出:

id, name, date
101,test_name,2019-06-13T13:45:00.000Z
103,test_name3,2019-06-14T13:45:00.000Z, 2019-06-14T17:45:00.000Z
104,,

我尝试如下使用正则表达式,但是它给了我一个错误TypeError: expected string or bytes-like object

re.search(r"\[([A-Za-z0-9_]+)\]", df['id'])

3 个答案:

答案 0 :(得分:0)

图我可以使用以下方法提取数据:

df['id'].str.get(0)

答案 1 :(得分:0)

遍历数据框以访问每个字符串,然后使用:

newstring = oldstring[1:len(oldstring)-1]

替换数据框中的单元格。

答案 2 :(得分:0)

尝试遍历各列:

for col in df.columns:
    df[col] = df[col].str[1:-1]

或者如果您的数据没有问题,请使用apply

df = df.apply(lambda x: x.str[1:-1])

输出:

    id        name                                               date
0  101   test_name                           2019-06-13T13:45:00.000Z
1  103  test_name3  2019-06-14T13:45:00.000Z, 2019-06-14T17:45:00....
2  104           

或者,如果要使用正则表达式,则需要str访问器和extract

df.apply(lambda x: x.str.extract('\[([A-Za-z0-9_]+)\]'))