如何将行值的1D列表和列名的列表组合到pandas Dataframe 中?[副本]

cgh8pdjw  于 2023-06-20  发布在  其他
关注(0)|答案(3)|浏览(121)

此问题已在此处有答案

Convert 1D list into a (2D) pandas dataframe(2个答案)
去年关闭。
假设我有一个数据列表,其中包含多个列的多个行值:

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']

现在,我如何用pandas将这两个列表合并到一个 Dataframe 中,像这样?

fruv7luv

fruv7luv1#

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
vtwuwzda

vtwuwzda2#

您可以从列表中创建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
xam8gpfp

xam8gpfp3#

您可以使用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

相关问题