python-将列重新排列到熊猫的下一行

前端之家收集整理的这篇文章主要介绍了python-将列重新排列到熊猫的下一行 前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我有一个以下格式的数据框:

ID   A    B    C     D     E     F
W1   a1   b1   c1    d1    e1    f1
W2   a2   b2   c2    d2    e2    f2
W3   a3   b3   c3    d3    e3    f3
W4   a4   b4   c4    d4    e4    f4
W5   a5   b5   c5    d5    e5    f5
W6   a6   b6   c6    d6    e6    f6

如果我想获得以下格式.使用熊猫.

ID   A    B    E     F
W1   a1   b1   e1    f1
W1   c1   d1   e1    f1
W2   a2   b2   e2    f2
W2   c2   d2   e2    f2
W3   a3   b3   e3    f3
W3   c3   d3   e3    f3
W4   a4   b4   e4    f4
W4   c4   d4   e4    f4
W5   a5   b5   e5    f5
W5   c5   d5   e5    f5
W6   a6   b6   e6    f6
W6   c6   d6   e6    f6

然后将此数据帧分解为多个数据帧,以将第1列作为文件名写入单个csv文件.

W1.csv

W1   a1   b1   e1    f1
W1   c1   d1   e1    f1 

W2.csv

W2   a2   b2   e2    f2
W2   c2   d2   e2    f2

W3.csv

W3   a3   b3   e3    f3
W3   c3   d3   e3    f3

W4.csv

W4   a4   b4   e4    f4
W4   c4   d4   e4    f4

W5.csv

W5   a5   b5   e5    f5
W5   c5   d5   e5    f5

W6.csv

W6   a6   b6   e6    f6
W6   c6   d6   e6    f6
最佳答案
如果确定C-> A和D-> B,则可以重新合并帧,然后填充.通常,d仅需要将要移动的列与应该放置在其下的列相关联.

d = dict(C='A',D='B')
u = df[[*d]].copy()
f = df.drop([*d],axis=1)

g = pd.concat([f,u.rename(columns=d)],sort=False).sort_index().ffill().groupby('ID')

现在,您可以选择使用g将每个单独的帧写入文件

for _,group in g:
    print(group,end='\n\n')
   ID   A   B   E   F
0  W1  a1  b1  e1  f1
0  W1  c1  d1  e1  f1

   ID   A   B   E   F
1  W2  a2  b2  e2  f2
1  W2  c2  d2  e2  f2

   ID   A   B   E   F
2  W3  a3  b3  e3  f3
2  W3  c3  d3  e3  f3

   ID   A   B   E   F
3  W4  a4  b4  e4  f4
3  W4  c4  d4  e4  f4

   ID   A   B   E   F
4  W5  a5  b5  e5  f5
4  W5  c5  d5  e5  f5

   ID   A   B   E   F
5  W6  a6  b6  e6  f6
5  W6  c6  d6  e6  f6

猜你在找的Python相关文章