【问题标题】:Split columns of lists into multiple columns将列表的列拆分为多列
【发布时间】:2022-01-09 06:49:39
【问题描述】:

我在列表中有列值

df1 = pd.DataFrame(
    {
        "column0": [["xx, aa", "xx, aa"]],
        "column1": [["yy, bb","yy, aa"]],
        "column2": [["cc, xx", "cc, xx"]]})

         column0         column1               column2
0   [xx, aa, xx, aa]    [yy, bb, yy, aa]    [cc, xx, cc, xx]

我想把它们全部分成多列

结果:

   column0 column1 column2 column3 column4 column5  column6  column7 column8 column9  
0   xx    aa   xx     aa    yy    bb    yy     aa      cc       xx     cc     xx

有什么想法吗?

编辑:

建议的问题与问题无关,因为我有多个列,而不仅仅是一个列

【问题讨论】:

  • 不应该是 12 列而不是 10 列吗?
  • 目前尚不清楚最终数据框中应该有 8 列还是 12 列。 (每个列表有 2 个字符串值,而不是 4 个。)

标签: python python-3.x list dataframe


【解决方案1】:

我认为这是在实例化 pandas DataFrame 之前清理数据的更好方法。

根据您发布的数据结构,您可以选择以下选项:

import pandas as pd

init_dict = {"column0": [["xx, aa", "xx, aa"]], "column1": [["yy, bb", "yy, aa"]], "column2": [["cc, xx", "cc, xx"]]}

pd_dict = {}
col_counter = 0
for _, value in init_dict.items():
    for item in value.pop():
        for inner_item in item.split(","):
            pd_dict[f"column{col_counter}"] = [inner_item.strip()]
            col_counter += 1

pd.DataFrame(pd_dict)
>>>  column0 column1 column2 column3 column4 column5 column6 column7 column8  \
0      xx      aa      xx      aa      yy      bb      yy      aa      cc   

  column9 column10 column11  
0      xx       cc       xx  

【讨论】:

    【解决方案2】:

    您可以使用np.char.split 方法将每个单元格以逗号分隔,并将其重新整形为适当的形状。

    splits = np.char.split(np.array(df1.values.tolist()), sep =', ')
    split_data = np.stack(splits.ravel()).reshape(df1.shape[0],-1)
    
    df2 = pd.DataFrame(split_data, columns=['Col'+str(i) for i in range(split_data.shape[1])])
    print(df2)
    

    输出:

      Col0 Col1 Col2 Col3 Col4 Col5 Col6 Col7 Col8 Col9 Col10 Col11
    0   xx   aa   xx   aa   yy   bb   yy   aa   cc   xx    cc    xx
    

    【讨论】:

      猜你喜欢
      • 2018-11-25
      • 2023-01-11
      • 2016-05-31
      • 2020-02-10
      • 1970-01-01
      • 2020-04-23
      相关资源
      最近更新 更多