将1D列表转换为(2D)pandas Dataframe

lc8prwob  于 2023-06-20  发布在  其他
关注(0)|答案(2)|浏览(117)

我想把这个列表转换成一个pandas数据框

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

dataframe将有3列和3行。我试着用

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

但好像对我没用

oalqel3c

oalqel3c1#

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

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。

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

1.如果你想把一个平面列表转换成一个多列的DataFrame(如OP中所示),一种方法是使用iter()zip()函数转置列表,并转换成一个DataFrame。

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

相关问题