将连续的行号作为第一列添加到多个熊猫

时间:2019-04-25 22:45:22

标签: python pandas

我是Pandas的新手,例如,如果我具有以下数据框,我想向不同的数据框添加序列号或行号

df1 
col1 col2 col3
123  aaaa   bbbb
345 eeee   cccc

df2

col1 col2 col3
1234  aaa   bbb
3456  eee   ccc 

df3

col1  col2 col3
12345  aa   ggb
34567  ee   jkc 

我想在每个熊猫的开头添加一列,因此输出应如下所示:

df1 
col0 col1 col2 col3
1     123  aaaa   bbbb
2     345 eeee   cccc

df2

col0  col1 col2 col3
3      1234  aaa   bbb
4      3456  eee   ccc 

df3

col0  col1  col2 col3
5     12345  aa   ggb
6     34567  ee   jkc 

我使用AWK命令设法做到这一点,但是将数据帧转换为csv之后,如何仅使用熊猫就能做到这一点呢?

1 个答案:

答案 0 :(得分:5)

我正在使用concat,并尽一切努力将所有原始信息保留在所有子df中(即使原始index也是如此)

df = pd.concat([df1, df2, df3], keys = [1,2,3])
df.insert(loc = 0, column = 'col0', value = np.arange(len(df))+1 )
df1,df2,df3 = [x.reset_index(level = 0,drop = True) for _, x in df.groupby(level = 0)]
df1
Out[524]: 
   col0  col1  col2  col3
0     1   123  aaaa  bbbb
1     2   345  eeee  cccc
df2
Out[525]: 
   col0  col1 col2 col3
0     3  1234  aaa  bbb
1     4  3456  eee  ccc
df3
Out[526]: 
   col0   col1 col2 col3
0     5  12345   aa  ggb
1     6  34567   ee  jkc