如何将 Python 列表转换为 Python Dataframe?
Posted
技术标签:
【中文标题】如何将 Python 列表转换为 Python Dataframe?【英文标题】:How can I convert the Python list into Python Dataframe? 【发布时间】:2019-06-24 00:10:55 【问题描述】:我想将列表值转换为 Python 数据框,但我的标头值在列表内。
列表中的值是这样的:
cols_head=['BATSMEN', '', 'R', 'B', '4s', '6s', 'SR', '', 'C Hemraj', 'c Mohammad Mithun b Mehidy Hasan Miraz', '9', '17', '2', '0', '52.94', '']
我已经从 espn 网站上抓取了值,现在当值在列表中时,它是记分卡,我想将它们转换为 pandas 数据框。当我将列表转换为数据框时,我得到的是这样的:
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
从序列 0 到 7 这些是数据帧的列
这是我尝试转换值的代码:
cols_head=[x.text.strip() for x in cell]
#print(cols_head)
List_values=cols_head[:-13]
df=pd.DataFrame(List_values)
我想要这样输出数据框:
BATSMEN Out R B 4s 6s SR
1 C Hemraj C Mohammad Mithun 9 17 2 0 52.94
【问题讨论】:
【参考方案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')
【讨论】:
【参考方案2】:这适用于您发布的数据。如果您的列表实际上包含多行数据,则需要稍微调整一下。
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
【讨论】:
以上是关于如何将 Python 列表转换为 Python Dataframe?的主要内容,如果未能解决你的问题,请参考以下文章