如何在一个列中播种并且不对熊猫中的其他列做任何事情?

时间:2017-10-22 00:54:27

标签: python pandas pandas-groupby

我有一个这样的数据框:

  a  b  c  d 
0 1  1  1  1
1 1  2  2  2
2 1  3  3  3
3 1  4  4  4
4 2  1  1  1
5 2  2  2  2
6 2  3  3  3

如何分组'a',对b c d列无效,并拆分成多个数据帧?像这样: 第一组是'a'列:

  a  b  c  d 
0 1  1  1  1
1    2  2  2
2    3  3  3
3    4  4  4
4 2  1  1  1
5    2  2  2
6    3  3  3

然后根据'a'中的数字分成不同的数据帧:

dataframe 1:

      a  b  c  d 
    0 1  1  1  1
    1    2  2  2
    2    3  3  3
    3    4  4  4
dataframe 2:
      a  b  c  d 
    0 2  1  1  1
    1    2  2  2
    2    3  3  3
:
:
:
dataframe n:
      a  b  c  d 
    0 n  1  1  1
    1    2  2  2
    2    3  3  3 

2 个答案:

答案 0 :(得分:2)

// now you do "parse" your string backwards for (int index = anyString.Length - 1; index >= 0; index--) { char yourChar = anyString[index]; // your logic here. } 返回的每个组进行迭代。

df.groupby

如果你想要数据帧的字典,我建议:

for _, g in df.groupby('a'):
     print(g, '\n')

   a  b  c  d
0  1  1  1  1
1  1  2  2  2
2  1  3  3  3
3  1  4  4  4 

   a  b  c  d
4  2  1  1  1
5  2  2  2  2
6  2  3  3  3 

此处,df_dict = {idx : g for idx, g in df.groupby('a')} 是唯一的idx值。

一些漂亮的技巧礼貌Root

a

而且,

df_dict = dict(list(df.groupby('a')))  # for a dictionary

答案 1 :(得分:1)

这是使用np.split

的方法
idx=df.a.diff().fillna(0).nonzero()[0]
dfs = np.split(df, idx, axis=0)

dfs
Out[210]: 
[   a  b  c  d
 0  1  1  1  1
 1  1  2  2  2
 2  1  3  3  3
 3  1  4  4  4,    a  b  c  d
 4  2  1  1  1
 5  2  2  2  2
 6  2  3  3  3]
dfs[0]
Out[211]: 
   a  b  c  d
0  1  1  1  1
1  1  2  2  2
2  1  3  3  3
3  1  4  4  4