如何从python数据框中删除方括号

时间:2018-04-06 04:41:09

标签: python pandas

enter image description here我创建了一个pandas数据帧并将我的信息存储在给定的帧中作为DF

当我打印df时 我得到输出

Number  changes                                       Id
300     ['Body Weight', 'Color']                     12345
400                                                  32145
500                                                  45698
600                                                  74125
700     Body Weight                                  96325
800     Body Weight                                   44444
900     ['band Voltage Rating', 'Body Weight']       963258
1000                                                 666666

在某些地方进行列更改有“[”和“]”。请告诉我如何删除这些括号?

3 个答案:

答案 0 :(得分:0)

您的数据框中似乎有一个值列表,因此括号中。以下是如何在列中轻松删除列表中的所有括号。以下是它如何在示例数据帧上工作。 (关键是在拆分之前将每一行转换为字符串)

    import pandas as pd
    d = {'col1': [["dog","cat"],["apple","pear"]],'col2': [3,4]}
    df = pd.DataFrame(data=d)
    df['col1'] = pd.DataFrame([str(line).strip('[').strip(']') for line in df['col1']])

从我的示例中,您只需要将列名'col1'替换为'changes',然后将'df'替换为您的数据帧的名称。您会注意到引号仍将显示在最终输出中。如果您想删除它们,可以执行以下操作:

    df['col1'] = pd.DataFrame([str(line).strip('[').strip(']').replace("'","") for line in df['col1']])

答案 1 :(得分:0)

这是完全正常的。列changes包含cells个多个值,因此类型为list如果单个列cell具有多个值,dataframe将它们表示为列表。 dataframe这是非常有用的功能,您可以以非常结构化的方式访问cell的{​​{1}}个特定信息。如果您使用正确的方式打印或使用dataframe,则无需删除方括号。如果您将list cell转换为字符串,则需要dataframe括号,否则如果您使用正确的代码与strip一起使用,则不会打扰您

答案 2 :(得分:0)

这可能会有所帮助。将.applylambda一起使用。我正在使用isinstance检查type是否为list。

<强>实施例

import pandas as pd
df = pd.DataFrame({"changes": [['Body Weight', 'Color'], ['band Voltage Rating', 'Body Weight'], "aaaaa"]})
print(df["changes"].apply(lambda x: ",".join(x) if isinstance(x, list) else x))

<强>输出:

0                  Body Weight,Color
1    band Voltage Rating,Body Weight
2                              aaaaa
Name: changes, dtype: object