【问题标题】:How to separate a list of strings into several lines within a row/cell?如何将字符串列表分成一行/单元格中的几行?
【发布时间】:2021-04-08 13:45:47
【问题描述】:

我在数据框的单元格中有一个字符串 ['A', 'B', 'C'] )。

现在我想让它像熊猫数据框中的(第 2 行,ColA)一样,如下上传的图片,我该如何实现?当我使用 to_CSV 将它保存到 CSV 时,我还希望它在 excel 中看起来像这样。

输入:

df = pd.DataFrame({'ColA' : "['A','B','C']"}, index=[1])

输出:

         ColA
1   ['A','B','C']
2         A
          B
          C

我相信 text.explode 不是解决方案,因为它将列表分成几行。 谢谢!并祝大家新年健康平安!

【问题讨论】:

  • 这很令人困惑。原名单是否保留?列表项是分解成自己的行还是打印的内容有所不同?您使用的是列表还是字符串?图片不能告诉我们这些事情。
  • 感谢您的光临,我已经编辑了我的问题。希望这次更清楚。
  • 感谢您的澄清。为了将来参考,添加一些示例数据或代码以生成示例以及预期输出(作为输出 DataFrame)也将非常有帮助。这样可以更轻松地组合出一个我们可以确信适用于您的用例的有效答案。
  • @yts61 我已经更新了您的问题,以便输入/输出是文本。以后请不要图像,如果我输入/输出不正确,请正确编辑。

标签: python pandas string list dataframe


【解决方案1】:

您必须对replace 进行一些清理。对于replace,我在字符串中有两种不同的模式,我想要两个单独的替换。一个替换是'\n',所以我可以在发送到excel时看到新行。另一个替换是用空字符串替换,即 nothingor 运算符|'' 的空字符串输出的不同可能替换分开。 []regex 字符,所以你必须用\ 转义,所以你基本上摆脱了[]'。您还必须将regex=True 传递给replace。:

df = pd.DataFrame({'ColA' : "['A','B','C']"}, index=[1])
df['ColA'] = df['ColA'].replace(["','", "\[|\]|'"], ['\n', ''], regex=True)
df
Out[1]: 
      ColA
1  A\nB\nC

并在扩展行宽后在Excel中输出:

【讨论】:

  • 谢谢大卫,但我希望所有 A、B、C 都在同一行/单元格中,还有其他方法吗?
  • @yts61 编辑:df['ColA'] = df['ColA'].replace(["','", "\[|\]|'"], ['\n', ''], regex=True) 更简单。
猜你喜欢
  • 2013-01-29
  • 1970-01-01
  • 1970-01-01
  • 2020-09-08
  • 1970-01-01
  • 2020-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多