我有列表形式的数据,看起来像['abc','bcd','cde',1,2,3]。我的问题是'abc','bcd'和'cde'是列名,而1,2,3是每列的值。
如何将列表转换为保留列名和相应值的数据框?
这是我的数据在列表中的样子:
[ sepal_length sepal_width petal_length petal_width species
0 5.1 3.5 1.4 0.2 0
1 4.9 3.0 1.4 0.2 0
2 4.7 3.2 1.3 0.2 0
3 4.6 3.1 1.5 0.2 0
4 5.0 3.6 1.4 0.2 0
5 5.4 3.9 1.7 0.4 0]
所以我不知道它内部是否仍然保留数据结构。
先谢谢您!
答案 0 :(得分:2)
尝试一下:
l = ['abc','bcd','cde',1,2,3]
keys = l[:len(l)//2]
values = [[e] for e in l[len(l)//2:]]
pd.DataFrame(dict(zip(keys,values)))
返回
abc bcd cde
0 1 2 3
如果每列的值大于1:
l = ['abc','bcd','cde',1,2,3,4,5,6]
n_columns = 3
#or
n_columns = len([e for e in l if isinstance(e,str)])
keys = l[:n_columns]
values = [list() for _ in range(n_columns)]
for i,e in enumerate(l[n_columns:]):
values[i%n_columns].append(e)
pd.DataFrame(dict(zip(keys,values)))
返回
abc bcd cde
0 1 2 3
1 4 5 6
答案 1 :(得分:1)
import pandas as pd
import numpy as np
nb_columns = 3
my_list = ['abc','bcd','cde',1,2,3]
# Extract the data from your list and reshape with the proper form (1 row, X columns)
data = np.reshape(my_list[nb_columns:], (1,nb_columns))
# Create a pandas Dataframe with your data and a list of columns name
my_pandas = pd.DataFrame(data, columns=my_list[:nb_columns])
编辑:多行
my_list = ['abc','bcd','cde',1,2,3,4,5,6]
# Try to count the number of rows present in the list
nb_row = int((len(my_list)-nb_columns)/nb_columns)
# Extract the data from your list and reshape with the proper form (N row, X columns)
data = np.reshape(my_list[nb_columns:], (nb_row, nb_columns))
如果还有其他问题。