我创建了一个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
在某些地方进行列更改有“[”和“]”。请告诉我如何删除这些括号?
答案 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)
这可能会有所帮助。将.apply
与lambda
一起使用。我正在使用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