Python 从panda数据帧中删除方括号

Python 从panda数据帧中删除方括号,python,pandas,python-2.7,Python,Pandas,Python 2.7,我有一个数据帧,我需要从中删除方括号,以便输入到循环中 我试过使用str.strip和str.commands。然而,我得到的错误是,我必须传递一个带有布尔值的数据帧。我的数据框中的值似乎是列表 m2 = pd.read_csv('newm2.csv', sep=',s', header=None) print m2 样本输入: m2=pd.DataFrame([ [[14,38,51,65,84,85]], [[3,34,58,65,66,75]], [[3,15,68,70,80,82]]

我有一个数据帧,我需要从中删除方括号,以便输入到循环中

我试过使用str.strip和str.commands。然而,我得到的错误是,我必须传递一个带有布尔值的数据帧。我的数据框中的值似乎是列表

m2 = pd.read_csv('newm2.csv', sep=',s', header=None)
print m2
样本输入:

m2=pd.DataFrame([
[[14,38,51,65,84,85]],
[[3,34,58,65,66,75]],
[[3,15,68,70,80,82]],
[[19,31,42,50,54,97]],
[[4,9,48,62,74,77]],
])
上面是它当前正在打印的内容的一个小示例。我需要每一行看起来像:

"14,38,51,65,84,85"

如何解决此问题?

一种简单的方法是将
列表
转换为
str

x=[
[[14,38,51,65,84,85]],
[[3,34,58,65,66,75]],
[[3,15,68,70,80,82]],
[[19,31,42,50,54,97]],
[[4,9,48,62,74,77]],
]
m2=pd.数据帧(x)
m2[0]=m2[0]。应用(lambda x:','。联接([str(i)表示x中的i]))
平方米
出[1]:
0
0      '14,38,51,65,84,85'
1      '3,34,58,65,66,75'
2      '3,15,68,70,80,82'
3      '19,31,42,50,54,97'
4       '4,9,48,62,74,77'
编辑

如果行的类型为
str
,而实际上不是
list
,该怎么办。我们只是将它们转换为literal str,然后执行
.join

从ast导入文字\u评估
x=[
['[14,38,51,65,84,85]'],
['[3,34,58,65,66,75]'],
['[3,15,68,70,80,82]'],
['[19,31,42,50,54,97]'],
['[4,9,48,62,74,77]'],
]
m2=pd.数据帧(x)
m2[0]=m2[0]。应用(lambda x:','。连接([str(i)表示文字中的i_eval(x)])
平方米
出[1]:
0
0      '14,38,51,65,84,85'
1      '3,34,58,65,66,75'
2      '3,15,68,70,80,82'
3      '19,31,42,50,54,97'
4       '4,9,48,62,74,77'

由于性能较差,我会避免使用
apply
。还有一种方法

m2 = pd.DataFrame([
    [[14,38,51,65,84,85]],
    [[3,34,58,65,66,75]],
    [[3,15,68,70,80,82]],
    [[19,31,42,50,54,97]],
    [[4,9,48,62,74,77]],
])
m2.iloc[:, 0] = m2.iloc[:, 0].astype(str)
m2.iloc[:, 0] = ['"' + x.strip('[').strip(']').replace(' ','') + '"' for x in m2.iloc[:, 0]]
m2
输出:

                0
0   "14,38,51,65,84,85"
1   "3,34,58,65,66,75"
2   "3,15,68,70,80,82"
3   "19,31,42,50,54,97"
4   "4,9,48,62,74,77"
作为

你可以

b = str(a) # out: '[1,2,3,4]'
避免“[”和“]”

b = str(a)[1:-1] # out: '1,2,3,4'
因此,我们只需将其应用于数组m2[0]中的每个数组

import pandas as pd

m2 = pd.DataFrame([
    [[14,38,51,65,84,85]],
    [[3,34,58,65,66,75]],
    [[3,15,68,70,80,82]],
    [[19,31,42,50,54,97]],
    [[4,9,48,62,74,77]],
])

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

print(m2[0])
输出:

0    14, 38, 51, 65, 84, 85
1     3, 34, 58, 65, 66, 75
2     3, 15, 68, 70, 80, 82
3    19, 31, 42, 50, 54, 97
4      4, 9, 48, 62, 74, 77

df[0]。应用(“,”.join)谢谢您的帮助。但是,现在的输出是:0[,1,4,,,3,8,,,5,1,,,6,5,,,8,4,,,8,5,]如果在数据集上运行两次,则应该是这样。如果加载并运行该函数,它将返回字符串。这是@WeNYoBen提供的相同想法(他的想法更简洁、更中肯),据我所知,我只运行了一次,是否有什么原因导致它运行了两次?我想我知道发生了什么。你的信息可能是字符串。让我更新我的答案
import pandas as pd

m2 = pd.DataFrame([
    [[14,38,51,65,84,85]],
    [[3,34,58,65,66,75]],
    [[3,15,68,70,80,82]],
    [[19,31,42,50,54,97]],
    [[4,9,48,62,74,77]],
])

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

print(m2[0])
0    14, 38, 51, 65, 84, 85
1     3, 34, 58, 65, 66, 75
2     3, 15, 68, 70, 80, 82
3    19, 31, 42, 50, 54, 97
4      4, 9, 48, 62, 74, 77