使用多次爆炸

时间:2020-07-24 16:07:15

标签: python pandas dataframe

假设我的原始数据如下:

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 |

0 个答案:

没有答案