在 Dataframe 中为列表解压缩 2 列以获取其对应的行值 [重复]

Posted

技术标签:

【中文标题】在 Dataframe 中为列表解压缩 2 列以获取其对应的行值 [重复]【英文标题】:Unpack 2 columns for list in Dataframe to get its corresponding values to rows [duplicate] 【发布时间】:2021-10-08 03:38:11 【问题描述】:

我有一个如下所示的数据框示例。

data = 'Participant':['A', 'B', 'C', 'D'],
    'Total Entry':[2, 3, 1, 3],
    'Time':[['2021-07-12', '2021-07-16'],['2021-07-21','2021-07-22','2021-07-24'],['2021-06-20'],['2021-07-26','2021-07-29','2021-08-01']],
    'Values':[['Negative','Negative'],['Positive','Positive','Negative'],['Negative'],['Negative','Positive','Negative']]

df_test= pd.DataFrame(data)
df_test

我想解压缩 2 列的相应值并将其附加到相应的行。最终得到的结果如下所示。

我尝试使用 pop、unstack 和 Series 函数,但它不起作用。任何帮助是极大的赞赏。 谢谢。

【问题讨论】:

【参考方案1】:

试试:

df_test.explode(['Time', 'Values'])

【讨论】:

我收到一个给定的值错误:“ValueError: column must be a scalar” 先单独尝试df_test = df_test.explode('Time')df_test = df_test.explode('Values') 它不能很好地工作,因为它提供了 'Time' 和 'Values' 的所有组合,从而导致更大的 23 行数据框。我只需要 9 行的对应值。 想通了。 df_test.set_index(['Participant','Total Entry']).apply(pd.Series.explode).reset_index() 工作。

以上是关于在 Dataframe 中为列表解压缩 2 列以获取其对应的行值 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

将字典解包到单个 DataFrame 中

解压缩python列表时*做啥? [复制]

我可以解压缩变量以检查其他列表中的成员资格吗?

如何将元组列表解压缩到单个列表中? [复制]

在 spark 中分解多个数组列以更改输入模式

如何扫描列以在Pyspark DataFrame中获取新列