python - Pandas 爆炸 - 无法从重复的轴重新索引

标签 python pandas dataframe

假设我有一个数据框 df :

   C1      C2      C3      C4               C5
0  [A]     [1]     s1      [123]            t1  
1  [A]     [1]     s2      321              t2
2  [A,B]   [1,2]   s3      [777,111]        t3
3  [B]     [2]     s4      145              t4
4  [B]     [2]     s5      [990]            t5
5  [A,B,B] [1,2,2] s6      [124,125,765]    t6
6  [A,A]   [1,3]   s7      119              t7
我想把一切都炸开,所以我一直在做df = df.apply(pd.Series.explode)但是,这给了我 ValueError: cannot reindex from a duplicate axis .我已将罪魁祸首追溯到 df 的第 6 行(最后一行) .之前在 C1 里有东西的时候我就明白了与 C2 中的长度不同.但我不明白爆炸最后一行有什么问题。
如果我这样做 pd.DataFrame([[['A','B'],[1,2],'s7',119,'t7']]).apply(pd.Series.explode() ,它工作正常,并按预期给了我以下内容:
   C1      C2      C3      C4         C5
0  A        1      s7      119        t7  
1  A        3      s7      119        t7
我无法弄清楚为什么最后一行是整个数据帧的一部分时会导致错误。我检查了索引,它都是唯一的。

最佳答案

随时进行清理并且它有效。

df = pd.DataFrame({'C1': [["A"], ["A"], ["A","B"], ["B"], ["B"], ["A","B","B"], ["A","A"]],
 'C2': [[1], [1], [1,2], [2], [2], [1,2,2], [1,3]],
 'C3': ['s1', 's2', 's3', 's4', 's5', 's6', 's7'],
 'C4': [[123], 321, [777,111], 145, [990], [124,125,765], 119],
 'C5': ['t1', 't2', 't3', 't4', 't5', 't6', 't7']})

df.explode("C1").reset_index().drop("index",1).explode("C2").reset_index()\
    .drop("index",1).explode("C4").reset_index().drop("index",1)


输出
  C1 C2  C3   C4  C5
0  A  1  s1  123  t1
1  A  1  s2  321  t2
2  A  1  s3  777  t3
3  A  1  s3  111  t3
4  A  2  s3  777  t3
5  A  2  s3  111  t3
6  B  1  s3  777  t3
7  B  1  s3  111  t3
8  B  2  s3  777  t3
9  B  2  s3  111  t3

关于python - Pandas 爆炸 - 无法从重复的轴重新索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63139154/

相关文章:

python - Pandas transform ('unique' ) 输出为逗号分隔字符串而不是列表

R Apply() 函数应用于特定数据帧列

python - 如何创建根据组大小排序的多索引数据框?

python - 从列表中删除 n 多个项目

python - 如何在多处理器系统上生成并行子进程?

python - 将@符号放入场景中 - Freshen

python - QSTK 的 eventprofiler 函数绘制不正确

python-2.7 - 匹配来自两个数据帧的两列,如果单元格匹配,则从第三列添加项目

dataframe - 如何在 Julia Dataframes 中用缺失值替换虚拟值?

python - Pandas 解析 csv 文件中千位分隔符后缺少零的问题