我有一个像这样的数据框 -
df = pd.DataFrame(
{'key': [1, 2, 3, 4],
'col1': [['apple','orange'], ['pineapple'], ['','','guava','',''], ['','','orange','apple','']],
'col2': [['087','799'], ['681'], ['078'], ['816','018']]
}
)
# key col1 col2
#0 1 [apple, orange] [087, 799]
#1 2 [pineapple] [681]
#2 3 [, , guava, , ] [078]
#3 4 [, , orange, apple, ] [816, 018]
我需要拆分列“col1”和“col2”并创建单独的行,但根据索引映射列表元素。所需的输出是这样的 -
desired_df = pd.DataFrame(
{'key': [1, 1, 2, 3, 4, 4],
'col1': [['apple'],['orange'],['pineapple'], ['guava'], ['orange'],['apple']],
'col2': [['087'],['799'], ['681'], ['078'], ['816'],['018']]
}
)
在 col1 中,可能存在空白元素,但非空 col1 元素的总长度将与 col2 相应元素的长度匹配。示例:df 的第 2 行和第 3 行。
我尝试了以下方法,但没有成功 -
df.set_index(['key'])[['col1','col2']].apply(pd.Series).stack().reset_index(level=1, drop=True)