【问题标题】:How to remove square brackets for each item from a list [duplicate]如何从列表中删除每个项目的方括号[重复]
【发布时间】:2019-01-01 04:05:35
【问题描述】:

Excel 有一个数字列表,我希望看到这样的内容:

[110652450, 5309154]

但是我看到这样的东西:

[[110652450], [5309154]] 

我尝试了 newtest = [x[:-1] for x in df] 在类似问题上提出的建议,但这只是删除了我的号码并保留了括号

df = pd.read_excel(filename.xlsx",sheetname='Sheet1')


df = df.values.tolist()

print(df)

【问题讨论】:

  • 您似乎认为[[110652450], [5309154]] 是一个字符串,但据我所知,它是一个多维列表。您必须通过索引访问它。所以x[0] 会给你[110652450], [5309154]x[0][0] 会返回110652450
  • 我建议阅读更多关于如何在 Python 中使用列表和其他数据类型的内容。
  • @malan 似乎 OP 并未尝试将此列表视为字符串(他甚至在问题标题中使用了“列表”一词)。他在哪里暗示df 是一个字符串?
  • @Joel,也许你是对的,但是通过访问一段好像他正在修剪括号(尽管如果他这样做他会写 x[1:-1])它似乎只是我,凭直觉,他将列表列表理解为用外部括号格式化的字符串。
  • @Joel,我相信我最初的评论甚至不正确。 x[0] 将导致 [110652450],因为该列表是单项列表的列表,而不是两项列表的列表。

标签: python list pandas dataframe


【解决方案1】:

我不太明白你的问题,但你似乎正在寻找这样的东西?

df = [[110652450], [5309154]]
newest = [i[0] for i in df]
print(newest)
>> [110652450,5309154]

【讨论】:

  • 谢谢!排序:)
【解决方案2】:

numpy.squeeze 可能是执行此操作的首选方法。调用np.squeeze(a) 获取您想要展平的阵列。 np.squeeze 应该比 [e[0] for e in a] 之类的列表理解要快得多

【讨论】:

    【解决方案3】:

    您可以使用列表推导来删除方括号:

    df = pd.read_excel("filename.xlsx", sheetname="Sheet1")
    df = df.values.tolist()
    df = [x[0] for x in df]
    print(df)
    

    这是可行的,因为df 中的每个元素都是一个包含一个项目的列表。

    【讨论】:

      【解决方案4】:

      你有一个元素的列表。 x[:-1] 返回没有最后一个元素的列表,所以只是一个空列表。相反,请使用 [x[0] for x in df][x for x, in df]

      【讨论】:

        【解决方案5】:

        试试

        newtest = [x[0] for x in df]
        

        您需要访问列表的第一个元素并使用它而不是整个列表

        【讨论】:

          猜你喜欢
          • 2021-08-26
          • 2016-04-29
          • 1970-01-01
          • 2012-10-23
          • 2020-08-11
          • 1970-01-01
          • 2023-02-06
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多