Py学习  »  Python

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

spyderB • 2 年前 • 758 次点击  

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

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
 
758 次点击  
文章 [ 3 ]  |  最新文章 2 年前
inquirer
Reply   •   1 楼
inquirer    2 年前
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    2 年前

你可以用 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    2 年前

你可以创造 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