首页 > 解决方案 > 使用熊猫从单元格中删除方括号

问题描述

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

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'])

标签: regexpandas

解决方案


尝试遍历列:

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_]+)\]'))                                               

推荐阅读