社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

如何将行值列表和列名列表与python结合起来?[重复]

spyderB • 3 年前 • 1524 次点击  

假设我有一个数据列表,其中包含多列的多行值:

data = ['jack', 34, 'Sydney', 155 , 'Riti', 31, 'Delhi', 177.5 , 'Aadi', 16, 'Mumbai', 81 , 
        'Mohit', 31, 'Delhi', 167 , 'Veena', 12, 'Delhi', 144 , 'Shaunak', 35, 'Mumbai', 135 ,
        'Shaun', 35, 'Colombo', 111]

我还有另一个列表,其中包含列的名称:

columns = ['Name', 'Age', 'City', 'Score']

现在,我如何将这两个列表合并到一个带有熊猫的数据框中,就像这样?

expected output here

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/133102
 
1524 次点击  
文章 [ 3 ]  |  最新文章 3 年前
inquirer
Reply   •   1 楼
inquirer    3 年前
import pandas as pd

data = ['jack', 34, 'Sydney', 155, 'Riti', 31, 'Delhi', 177.5, 'Aadi', 16, 'Mumbai', 81, 'Mohit', 31, 'Delhi', 167,
        'Veena', 12, 'Delhi', 144, 'Shaunak', 35, 'Mumbai', 135, 'Shaun', 35, 'Colombo', 111]

columns = ['Name', 'Age', 'City', 'Score']
nnn = []
for i in range(0, len(data), 4):
    nnn.append(data[i:i + 4])

df = pd.DataFrame(nnn, columns=columns)

输出

      Name  Age     City  Score
0     jack   34   Sydney  155.0
1     Riti   31    Delhi  177.5
2     Aadi   16   Mumbai   81.0
3    Mohit   31    Delhi  167.0
4    Veena   12    Delhi  144.0
5  Shaunak   35   Mumbai  135.0
6    Shaun   35  Colombo  111.0
richardec
Reply   •   2 楼
richardec    3 年前

你可以用 data[0::4] 从第一项开始,每四项选择一项, data[1::4] 从第二项开始,每隔第四项进行选择,依此类推。然后,将它们放入数组并使用 dict + zip 使用该数组和列并将其传递给 pd.DataFrame :

df = pd.DataFrame(dict(zip(columns, [data[0::4], data[1::4], data[2::4], data[3::4]])))

输出:

>>> df
      Name  Age     City  Score
0     jack   34   Sydney  155.0
1     Riti   31    Delhi  177.5
2     Aadi   16   Mumbai   81.0
3    Mohit   31    Delhi  167.0
4    Veena   12    Delhi  144.0
5  Shaunak   35   Mumbai  135.0
6    Shaun   35  Colombo  111.0
Andrej Kesely
Reply   •   3 楼
Andrej Kesely    3 年前

你可以创造 np.array 然后使用 .reshape :

df = pd.DataFrame(np.array(data).reshape((-1, len(columns))), columns=columns)
print(df)

印刷品:

      Name Age     City  Score
0     jack  34   Sydney    155
1     Riti  31    Delhi  177.5
2     Aadi  16   Mumbai     81
3    Mohit  31    Delhi    167
4    Veena  12    Delhi    144
5  Shaunak  35   Mumbai    135
6    Shaun  35  Colombo    111