假设我的原始数据如下:
df = pd.DataFrame({
'col_1': np.arange(4),
'col_2': [['ab', 'bc'],
['bc', 'be'],
['ca', 'de', 'af'],
['acd', 'afg', 'a']
]})
然后我使用爆炸来拆开col_2
:
df = df.explode('col_2')
现在我应用另一个函数,该函数再次生成一个列表作为结果。为了简单起见,我们只使用list
。所以我们运行:
df['col_3'] = df.col_2.apply(list)
现在,我们想再次爆炸,因此我可以再次在其上运行正确的矢量化函数。但是,如果我再次应用爆炸,则会创建几个重复的条目。我怀疑这与重复的索引有关。
编辑:同时,我认为如果我创建一个新的Index列,则不会产生重复项。这样我的主要问题就解决了。但是有没有办法例如在使用爆炸时创建MultiIndex?
完整代码以快速说明问题
import pandas as pd
import numpy as np
from IPython.display import display
df = pd.DataFrame({'col_1': np.arange(4), 'col_2': [['ab', 'bc'], ['bc', 'be'], ['ca', 'de', 'af'], ['acd', 'afg', 'a']]})
df = df.explode('col_2')
df['col_3'] = df.col_2.apply(list)
df_tmp = df.explode('col_3')
display(df.loc[0])
display(df_tmp.loc[0])
编辑:索引0的所需输出:
| index | col_1 | col_2 | col_3 |
| 0 | 0 | ab | a |
| 0 | 0 | ab | b |
| 0 | 0 | bc | b |
| 0 | 0 | bc | c |