如何将python列表转换为python数据框

时间:2019-01-30 16:31:28

标签: python pandas list dataframe

我想将列表值转换为python数据框,但是我的标头值在列表内。

列表中的值是这样的

val validChars = mapOf('a' to 'o', 'e' to 'u', 'i' to 'y')
val chars = validChars.plus(validChars.map { it.key.toUpperCase() to it.value.toUpperCase() }.toMap())

var pattern = "klmn"
pattern = pattern.plus(pattern.toUpperCase())

val str = "kotlIn is a functional programming Language"
val result = str.mapIndexed { i, c ->
    if (i > 0) { if (pattern.contains(str[i -1])) chars.getOrDefault(c, c) else c } else c
}.joinToString("")
println(result)

我已经从espn网站上删除了这些值,当值在列表中时,现在是记分卡,我想将它们转换为pandas数据框。当我将列表转换成数据框后,我得到的是这样

cols_head=['BATSMEN', '', 'R', 'B', '4s', '6s', 'SR', '', 'C Hemraj', 'c Mohammad Mithun b Mehidy Hasan Miraz', '9', '17', '2', '0', '52.94', '']

从序列0到7,这些是数据帧的列

这是我尝试转换值的代码

              0
    0   BATSMEN
    1   Out
    2   R
    3   B
    4   4s
    5   6s
    6   SR
    7   
    8   C Hemraj
    9   c Mohammad Mithun b Mehidy Hasan Miraz
    10  9
    11  17
    12  2
    13  0
    14  52.94

我要这样输出数据框

    cols_head=[x.text.strip() for x in cell]
    #print(cols_head)    
     List_values=cols_head[:-13]
    df=pd.DataFrame(List_values)

2 个答案:

答案 0 :(得分:1)

您可以使用列表推导。这是在您的列表包含任意数量的相同格式的行的假设下进行的。注意,您实际上有8列。最后一个只是标有一个空字符串。

data = ['BATSMEN', '', 'R', 'B', '4s', '6s', 'SR', '', 'C Hemraj', 'c Mohammad Mithun b Mehidy Hasan Miraz', '9', '17', '2', '0', '52.94', '']

n = 8
df = pd.DataFrame([data[n*i:n*(i+1)] for i in range(1, len(data) // n)],
                  columns=data[:n])

print(df)

#     BATSMEN                                          R   B 4s 6s     SR  
# 0  C Hemraj  c Mohammad Mithun b Mehidy Hasan Miraz  9  17  2  0  52.94  

print(df.columns)

# Index(['BATSMEN', '', 'R', 'B', '4s', '6s', 'SR', ''], dtype='object')

答案 1 :(得分:0)

这适用于您发布的数据。如果您的列表实际包含多行数据,则需要对其进行一些微调。

import pandas as pd

cols_head=['BATSMEN', '', 'R', 'B', '4s', '6s', 'SR', '', 'C Hemraj', 'c Mohammad Mithun b Mehidy Hasan Miraz', '9', '17', '2', '0', '52.94', '']
headers = cols_head[:7]
data = cols_head[8:-1]  # Ignores the two blanks at index 7 and 15
df = pd.DataFrame([data], columns=headers)

输出:

    BATSMEN                                          R   B 4s 6s     SR
0  C Hemraj  c Mohammad Mithun b Mehidy Hasan Miraz  9  17  2  0  52.94