将列表转换为Pandas Dataframe

wkyowqbh  于 2023-01-24  发布在  其他
关注(0)|答案(2)|浏览(188)

我想把这个列表转换成Pandas Dataframe

my_list = [1,2,3,4,5,6,7,8,9]

Dataframe 将有3列和3行。

df = pd.DataFrame(my_list, columns = list("abc"))

但似乎对我不起作用。

x8diyxa7

x8diyxa71#

您需要将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
dohp0rv5

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。

col_names = ['col1', 'col2', 'col3']
df = pd.DataFrame(dict(zip(col_names, my_list)))

1.如果要将平面列表转换为多列DataFrame(如在OP中),一种方法是使用iter()zip()函数转置列表,然后强制转换为DataFrame。
1.如果你想把一个平面列表转换成一个多列的DataFrame,但是连续的值是列值(而不是上面的行值),那么你必须转置成一个不同的形状。

col_names = ['col1', 'col2', 'col3']
df = pd.DataFrame(zip(*[iter(my_list)]*(len(my_list)//len(col_names))), index=col_names).T

相关问题