【问题标题】:How to expand a list in a pandas dataframe without repeating other column values如何在熊猫数据框中扩展列表而不重复其他列值
【发布时间】:2020-09-01 13:13:48
【问题描述】:

我想知道如何在不重复其他单元格中的变量的情况下扩展单元格中的列表。

我们的目标是获取它以便扩展列表但不重复第一列。我知道如何扩展列表,但如果可能的话,我不希望重复第一列的值。谢谢你的帮助!!

【问题讨论】:

  • 第二张照片是你想要的结果还是你一直坚持的?另外,那是仅有的两列吗?这是一个系列还是一个数据框?
  • 这是一个数据框,我想将第一张照片中的内容扩展到第二张。我正在努力弄清楚如何在不重复第一列值的情况下扩展列表。
  • 这不是那个问题的重复。使用explode 方法,其他列将不会保持空白,而是使用与列表对齐的值重复它们。我希望在不重复其他列中的其他变量的情况下扩展列表。
  • 只是为了美观吗?还是要确保不以 1 开头的记录与以 1 开头的记录无关?
  • 不——只是为了美观。我只是希望能够重复第二列中的行,而第一列中的行不重复。

标签: python pandas list dataframe expand


【解决方案1】:

为了得到你想要的东西,你仍然需要使用explode() 来得到你需要的东西。您只需要更进一步并更改第一列的值。请注意,这将破坏列表元素与它们所在行的字母之间的关联。您将为列(空字符串)创建第三个值,该值将针对不以开头的每条记录重复1.

如果您想从您正在讨论的行中删除该值,但仍希望这些记录与其列表关联的值相关联,那么您不能。一个值既在给定单元格中又不在该单元格中在逻辑上是不可能的。那么,我将向您展示消除原始关联的步骤。

对于这个例子,我命名了列,因为它们没有提供。

data = [
    ["a",["1 hey","2 hi","3 hello"]],
    ["b",["1 what","2 how","3 say"]]
]
df = pd.DataFrame(data,columns=["first","second"])
df = df.explode("second")
df['first'] = df.apply(lambda x: x['first'] if x['second'][0] == '1' else '', axis=1)

【讨论】:

  • 很好的答案,感谢您花时间写出来。
  • 有一个简短的问题,有没有办法改变代码最后一行中的x['second'][0] == '1' 以使其在 x['first'] 以上的值时返回''一样吗?
猜你喜欢
  • 2021-12-20
  • 1970-01-01
  • 1970-01-01
  • 2020-10-21
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
  • 2019-07-25
  • 2018-02-27
相关资源
最近更新 更多