如何将行值列表和列名列表与 python pandas 组合?
how to combine list of row values and a list of column names with python pandas?
假设我有一个数据列表,其中包含多个列的多个行值:
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,像这样?
您可以从您的列表中创建 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
您可以使用 data[0::4]
到 select 每 4 个项目,从第一个开始,data[1::4]
到 select 从第二个开始每 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
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
假设我有一个数据列表,其中包含多个列的多个行值:
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,像这样?
您可以从您的列表中创建 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
您可以使用 data[0::4]
到 select 每 4 个项目,从第一个开始,data[1::4]
到 select 从第二个开始每 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
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