根据一栏熊猫创建数据框

时间:2020-05-12 13:01:11

标签: python pandas dataframe

很抱歉,如果这是一个重复的问题,我搜索了一段时间,就这么简单,我找不到类似的问题。我希望仅基于Pandas数据框中的一列创建一个数据框(在我的情况下为5x3)。我已经尝试了pd.DataFrame和pd.concat,但似乎都没有用。下面的示例:

df = pd.DataFrame([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15])

#using pd.DataFrame
table_data = {'Column1': df.iloc[0:5,0],
                 'Column2': df.iloc[5:10,0],
                 'Column3': df.iloc[10:15,0]}
pd.DataFrame(table_data)

#different method using pd.DataFrame
pd.DataFrame([df.iloc[0:5,0],
              df.iloc[5:10,0],
              df.iloc[10:15,0]],
            columns = ['Column1', 'Column2', 'Column3'])

#using pd.concat
pd.concat([df.iloc[0:5,0], df.iloc[5:10,0], df.iloc[10:15,0]],
          axis=1, keys=['Column1', 'Column2', 'Column3'])

请注意,我的实际起始数据框有不止一列。当我使用索引而不是简单地对应该在每一列中的数字进行硬编码时,问题似乎正在发生。这似乎很简单,但我似乎找不到任何解决方法。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

赞:

In [591]: import numpy as np
In [585]: d = pd.DataFrame()
In [553]: df_split = np.array_split(df, 5) ## Split df into equal parts of 5 rows each

In [586]: for i in df_split: 
     ...:     d = pd.concat([d,i.reset_index(drop=True)], axis=1) 
     ...:

In [588]: d.columns = ['Col1', 'Col2', 'Col3']                                                                                                                                                              

In [589]: d                                                                                                                                                                                                 
Out[589]: 
   Col1  Col2  Col3
0     1     6    11
1     2     7    12
2     3     8    13
3     4     9    14
4     5    10    15