我想把这个列表转换成Pandas Dataframe
my_list = [1,2,3,4,5,6,7,8,9]
Dataframe 将有3列和3行。
df = pd.DataFrame(my_list, columns = list("abc"))
但似乎对我不起作用。
x8diyxa71#
您需要将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
dohp0rv52#
如果您来到这里寻找一种将Python列表转换为PandasDataFrame的方法,您可能会遇到以下问题之一: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.如果要将平面列表转换为 Dataframe 行,请先将其转换为嵌套列表:
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。1.如果你想把一个平面列表转换成一个多列的DataFrame,但是连续的值是列值(而不是上面的行值),那么你必须转置成一个不同的形状。
iter()
zip()
col_names = ['col1', 'col2', 'col3'] df = pd.DataFrame(zip(*[iter(my_list)]*(len(my_list)//len(col_names))), index=col_names).T
2条答案
按热度按时间x8diyxa71#
您需要将
list
转换为numpy array
,然后再转换为reshape
:dohp0rv52#
如果您来到这里寻找一种将Python列表转换为PandasDataFrame的方法,您可能会遇到以下问题之一:
1.最简单的方法是将其转换为DataFrame对象。如果不指定它,则会推断数据类型。
1.如果你有一个嵌套列表,DataFrame构造函数同样可以工作。确保列名的数量等于最长子列表的长度。
1.如果要将平面列表转换为 Dataframe 行,请先将其转换为嵌套列表:
1.如果要将嵌套列表转换为DataFrame,其中每个子列表都是DataFrame列,请将其转换为字典,然后强制转换为DataFrame。请确保列名的数目与列表的长度匹配,即
len(col_names) == len(my_list)
必须为True。1.如果要将平面列表转换为多列DataFrame(如在OP中),一种方法是使用
iter()
和zip()
函数转置列表,然后强制转换为DataFrame。1.如果你想把一个平面列表转换成一个多列的DataFrame,但是连续的值是列值(而不是上面的行值),那么你必须转置成一个不同的形状。