从数据框中的所有行中删除 [] 方括号

时间:2020-12-27 12:16:41

标签: python pandas dataframe dictionary dynamic

我从动态字典对象动态创建了一个数据框。所有值都用方括号括起来。像 [1] 用于所有列和行。如何摆脱这些牙套? []

让我试着用下面的步骤来解释。

  1. 我用 group by 命令创建了 5 列 12 行的表
  2. 我需要每个单元格作为另一个表格的一列。表示 12 x 5 = 60 列
  3. 我从该表中创建了一个包含 60 个密钥对的字典。
  4. 从那个 Dict 对象创建了一个新的 DF
  5. 新 DF 中的所有值都存储在 [] 方括号中,如 [1]。

如何去掉方括号[]?

3 个答案:

答案 0 :(得分:0)

考虑到您的值是字符串(不是列表),以下将起作用:

for i in df.columns:
    df[i]=df[i].apply(lambda x: x[1:-1])

答案 1 :(得分:0)

这实际上取决于值是字符串还是实际列表。如果您的数据框将所有值都视为字符串而不是列表,那么您可以使用以下简单的方法:

数据帧示例:

> df
   Patient        Treatement
0  patient1       B012
1  [patient2]     [B012]
2  [patient2]     [B012]
3  [patient2]     [B012]
4  [patient2]     [B012]

替换整个数据帧中的 [] 刹车

> df.replace('\[|\]','',regex=True)
   Patient        Treatement
0  patient1       B012
1  patient2       B012
2  patient2       B012
3  patient2       B012
4  patient2       B012

但是,如果您的值是实际的列表条目,则可以使用 Pandas explode https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.explode.html

另一种方法可能是使用 agg & join,但如果不知道数据帧的结构,就很难在这里提供帮助。

答案 2 :(得分:0)

问题不是很清楚,但如果每个单元格都包含一个列表,您可以尝试:

df = df.applymap(lambda x : x[0])
相关问题