Jul*_*tte 6 python arrays numpy dataframe pandas
我有一个输出数组的程序。
例如:
[[0, 1, 0], [0, 0, 0], [1, 3, 3], [2, 4, 4]]
Run Code Online (Sandbox Code Playgroud)
我想使用 Pandas 将这些数组转换为数据框。但是,当我这样做时,这些值变成了这样的行值:
正如您所看到的,整个数组中的每个数组都变成了自己的行。我希望整个数组中的每个数组都成为它自己的带有列名的列。
此外,在我的用例中,数组中的数组数量是可变的。可能有 4 个数组或 70 个,这意味着可能有 4 个列或 70 个。当涉及到列名时这是有问题的,我想知道是否有在 python 中自动递增列名的方法。
在下面查看我的尝试,让我知道如何解决这个问题。
我想要的结果只是将整个数组中的每个数组制作成自己的列而不是行,并且列的标题随着每个附加数组/列的增加而增加。
非常感谢。
需要帮忙。请回答!
frame = [[0, 1, 0], [0, 0, 0], [1, 3, 3], [2, 4, 4]]
numpy_data= np.array(frame)
df = pd.DataFrame(data=numpy_data, columns=["column1", "column2", "column3"])
print(frame)
print(df)
Run Code Online (Sandbox Code Playgroud)
一种可能的解决方案是transposing将数组转换numpy为dataframe. 这是代码:
import numpy as np
import pandas as pd
frame = [[0, 1, 0], [0, 0, 0], [1, 3, 3], [2, 4, 4]]
numpy_data= np.array(frame)
#transposing later
df = pd.DataFrame(data=numpy_data).T
#creating a list of columns using list comprehension without specifying number of columns
df.columns = [f'mycol{i}' for i in range(0,len(df.T))]
print(df)
Run Code Online (Sandbox Code Playgroud)
输出:
mycol0 mycol1 mycol2 mycol3
0 0 0 1 2
1 1 0 3 4
2 0 0 3 4
Run Code Online (Sandbox Code Playgroud)
11 列的代码相同:
import numpy as np
import pandas as pd
frame = [[0, 1, 0], [0, 0, 0], [1, 3, 3], [2, 4, 4], [5, 2, 2], [6,7,8], [8,9,19] , [10,2,4], [2,6,5], [10,2,5], [11,2,9]]
numpy_data= np.array(frame)
df = pd.DataFrame(data=numpy_data).T
df.columns = [f'mycol{i}' for i in range(0,len(df.T))]
print(df)
Run Code Online (Sandbox Code Playgroud)
mycol0 mycol1 mycol2 mycol3 mycol4 mycol5 mycol6 mycol7 mycol8 mycol9 mycol10
0 0 0 1 2 5 6 8 10 2 10 11
1 1 0 3 4 2 7 9 2 6 2 2
2 0 0 3 4 2 8 19 4 5 5 9
Run Code Online (Sandbox Code Playgroud)