将数组和元组元素转换为Pandas数据框中的列

时间:2019-03-23 22:56:23

标签: python pandas numpy

我有一个如下所示的Pandas数据框(带有两行示例):

    import re
    reg = re.compile(r'(?<=[0-9]\s[A-Z]\s)[0-9\-\s]+')

    text = """
    unimportant information--------

    unimportant information--------
    -blank line

    1 F -1 2 -3 4 5 6 7 (more columns of ints)

    2 L 3 -1 3 4 0 -2 1 (more columns of ints)

    3 A 3 -1 3 6 0 -2 5 (more columns of ints)"""

    ignore_start = 5  # 0,1,2,3 =  4
    expected_array = []
    for index, line in enumerate(text.splitlines()):
    if(index >= ignore_start):
            if reg.search(line):
            result = reg.search(line).group(0).strip()
            # Use Result
            expected_array.append(' '.join(result))

    print(expected_array)
    # Result: [
    #'- 1   2   - 3   4   5   6   7', 
    #'3   - 1   3   4   0   - 2   1', 
    #'3   - 1   3   6   0   - 2   5'
    #]

我需要将所有内容分解为单个标量列,如下所示:

    cadd_scores_vec        freqs_vec     CLASS
0  [0.001, -4.053424]  (0.0, 0.0, 0.0)      0
1  [0.001, -3.654581]  (0.0, 0.0, 0.0)      0

我不太在乎新的列名;重要的是如上所述将行排列成简单的向量。

我该如何实现?

1 个答案:

答案 0 :(得分:1)

使用pd.concat的两种方法:

pd.concat([pd.DataFrame(df[col].values.tolist()) for col in df.columns], axis=1, ignore_index=True)

pd.concat([df[col].apply(pd.Series) for col in df.columns], axis=1, ignore_index=True)

ignore_index=True仅确保您没有重复的列名。