如何在Pandas Dataframe中向下移动列行并重新分配列值?

时间:2016-07-18 19:49:22

标签: python pandas dataframe

我有以下pandas DataFrame:

import pandas as pd
import numpy as np
data = 'filename.dat'
df = pd.read_table(data)
print(df)

   0.098722  08l23252 243434214  5         True
0  0.469112 -0.282863 -1.509059  2         True
1  0.283421  1.224234  7.823421  2         False
2 -1.135632  1.212112 -0.173215  4         False
3      2.34     0.271    0.0932  4         True
4  0.119209 -1.044236 -0.861849  4         True
5 -2.104569 -0.494929  1.071804  4         False
6  0.469112 -0.282863 -1.509059  3         True
7  1.023236  1.224234  7.823421  3         False
8 -1.135632  1.212112 -0.173215  3         False
9  23.23422  2.613492  2.341592  1         True
....

保存filename.dat中的数据,使第一行被视为列。

df.columns

输出

Index(['0.098722', '08l23252', '243434214', '5', 'True'], dtype='object')

如何添加一行,使当前“列”值行向下移动到数据表中,我可以按实际列名重命名列?

此刻,我无法尝试

df.columns = ['A1', 'B1', 'C1', 'D1', 'E1']

因为这会简单地删除此行并使用A1B1等覆盖值。

   A1        B1        C1        D1        E1
1  0.283421  1.224234  7.823421  2         False
2 -1.135632  1.212112 -0.173215  4         False
3      2.34     0.271    0.0932  4         True
4  0.119209 -1.044236 -0.861849  4         True
....

2 个答案:

答案 0 :(得分:3)

试试这个:

df = pd.read_table(data, names=['A1', 'B1', 'C1', 'D1', 'E1'], header=None)

来自docs

  

名称:类似数组,默认无

     

要使用的列名列表。 如果文件不包含标题行,则应明确传递header = None

答案 1 :(得分:2)

添加参数names

df = pd.read_table(datan, names=['A1', 'B1', 'C1', 'D1', 'E1'])

但看起来更好的ID使用read_csv

import pandas as pd
import io

temp=u"""
9,40  
1,70"""
#after testing replace io.StringIO(temp) to filename
df = pd.read_csv(io.StringIO(temp), names=['b','m'])
print (df)
   b   m
0  9  40
1  1  70