我想把这个列表转换成一个pandas数据框
my_list = [1,2,3,4,5,6,7,8,9]
dataframe将有3列和3行。我试着用
df = pd.DataFrame(my_list, columns = list("abc"))
但好像对我没用
oalqel3c1#
您需要将list转换为numpy array,然后转换为reshape:
list
numpy array
reshape
df = pd.DataFrame(np.array(my_list).reshape(3,3), columns = list("abc")) print (df) a b c 0 1 2 3 1 4 5 6 2 7 8 9
qzwqbdag2#
如果你来这里寻找一种将Python列表转换为pandas DataFrame的方法,你可能会面临以下问题之一:1.最简单的方法是将其强制转换为DataFrame对象。如果不指定数据类型,则会推断出数据类型。
df = pd.DataFrame(my_list) # or df = pd.DataFrame({'col1': my_list})
1.如果你有一个嵌套列表,同样,DataFrame构造函数起作用。确保列名的数量等于最长子列表的长度。
col_names = ['col1', 'col2'] df = pd.DataFrame(my_list, columns=col_names)
1.如果你想将一个平面列表转换成一个数据框行,那么首先将它转换成一个嵌套列表:
df = pd.DataFrame([my_list])
1.如果要将嵌套列表转换为DataFrame(其中每个子列表都是DataFrame列),请将其转换为字典并强制转换为DataFrame。确保列名的数量与列表的长度匹配,即len(col_names) == len(my_list)必须为True。
len(col_names) == len(my_list)
col_names = ['col1', 'col2', 'col3'] df = pd.DataFrame(dict(zip(col_names, my_list)))
1.如果你想把一个平面列表转换成一个多列的DataFrame(如OP中所示),一种方法是使用iter()和zip()函数转置列表,并转换成一个DataFrame。
iter()
zip()
col_names = ['col1', 'col2', 'col3'] df = pd.DataFrame(zip(*[iter(my_list)]*len(col_names)), columns=col_names)
1.如果你想将一个平面列表转换成一个多列的DataFrame,但是连续的值是列值(不是上面的行值),那么你必须转置成一个不同的形状。
col_names = ['col1', 'col2', 'col3'] df = pd.DataFrame(zip(*[iter(my_list)]*(len(my_list)//len(col_names))), index=col_names).T
2条答案
按热度按时间oalqel3c1#
您需要将
list
转换为numpy array
,然后转换为reshape
:qzwqbdag2#
如果你来这里寻找一种将Python列表转换为pandas DataFrame的方法,你可能会面临以下问题之一:
1.最简单的方法是将其强制转换为DataFrame对象。如果不指定数据类型,则会推断出数据类型。
1.如果你有一个嵌套列表,同样,DataFrame构造函数起作用。确保列名的数量等于最长子列表的长度。
1.如果你想将一个平面列表转换成一个数据框行,那么首先将它转换成一个嵌套列表:
1.如果要将嵌套列表转换为DataFrame(其中每个子列表都是DataFrame列),请将其转换为字典并强制转换为DataFrame。确保列名的数量与列表的长度匹配,即
len(col_names) == len(my_list)
必须为True。1.如果你想把一个平面列表转换成一个多列的DataFrame(如OP中所示),一种方法是使用
iter()
和zip()
函数转置列表,并转换成一个DataFrame。1.如果你想将一个平面列表转换成一个多列的DataFrame,但是连续的值是列值(不是上面的行值),那么你必须转置成一个不同的形状。