我有一个这样的数据框:
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
答案 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