使用大熊猫数据框的列值创建迷你/子数据框

时间:2018-07-05 20:03:48

标签: python python-3.x pandas dataframe

我在此post的前面发布了一个问题。我以为我会分开问这个问题,因为这只是将大数据帧分为单独的迷你/子数据帧的一种操作。

说,我有这个df

    245           245   245           867               867
0   Reddit        NaN   NaN           Facebook          NaN
1   ColumnNeeded  NaN   ColumnValue   ColumnNeeded      ColumnValue
2   RedditInsight NaN   C             FacbookInsights   A
3   RedditText    NaN   H             FacbookText       L

现在,我想要这样两个不同的数据帧, df1

    245           245   245           
0   Reddit        NaN   NaN           
1   ColumnNeeded  NaN   ColumnValue   
2   RedditInsight NaN   C             
3   RedditText    NaN   H

df2

    867               867
0   Facebook          NaN
1   ColumnNeeded      ColumnValue
2   FacbookInsights   A
3   FacbookText       L

基本上,我想通过标头的唯一值来创建子数据帧。 我正在尝试创建一个像这样的列表:

list_of_dfs = [set(i) for i in df.columns]

这仅返回列值,

[{245}, {245}, {245}, {867}, {867}]

有什么想法我该怎么做?

1 个答案:

答案 0 :(得分:2)

由于您需要重置索引并获取列的每个唯一名称的子数据帧,因此需要:

[df[i].reset_index(drop=True) for i in df.columns.unique()]

输出:

[             
              245 245          245
 0         Reddit NaN          NaN
 1   ColumnNeeded NaN  ColumnValue
 2  RedditInsight NaN            C
 3     RedditText NaN            H,                

                867          867
 0         Facebook          NaN
 1     ColumnNeeded  ColumnValue
 2  FacbookInsights            A
 3      FacbookText            L
]