在 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 列以获取其对应的行值 [重复]的主要内容,如果未能解决你的问题,请参考以下文章