更改数据框列(熊猫)

时间:2020-06-06 15:57:49

标签: python pandas dataframe

我试图将数据框的列更改为无效。

以下是数据框:

>>> file = open("data.csv", "r")
>>> data = pd.DataFrame(file)
>>> print(data)
                                                   0
0   date,1. open,2. high,3. low,4. close,5. volume\n
1  2020-01-14,316.7,317.57,312.17,312.68,40653457...
2  2020-01-15,311.85,315.5,309.55,311.34,30480882...
3  2020-01-16,313.59,315.7,312.09,315.24,27207254...

这是data.rename函数,用于更改记录的列名-https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.rename.html

#Trying to change the columns with a dict
>>> data.rename(columns={"date": "date", "1. open": "open", "2. high": "high", "3. low": "low", "5. volume": "volume"})
                                                   0
0   date,1. open,2. high,3. low,4. close,5. volume\n
1  2020-01-14,316.7,317.57,312.17,312.68,40653457...
2  2020-01-15,311.85,315.5,309.55,311.34,30480882...
3  2020-01-16,313.59,315.7,312.09,315.24,27207254...

我在做什么错了?


更新: 感谢您的所有答复。

我明确定义了我想查看的列,并且所有列都可以完美地工作。

>>> df.columns = ['col1', 'col2', 'col3', 'col4', 'col5', 'col6']
>>> print (df)
         col1    col2    col3    col4    col5        col6
0  2020-01-14  316.70  317.57  312.17  312.68  40653457.0
1  2020-01-15  311.85  315.50  309.55  311.34  30480882.0
2  2020-01-16  313.59  315.70  312.09  315.24  27207254.0 

3 个答案:

答案 0 :(得分:1)

正如其他人所说,在将csv读取到pd.read_csv("data.csv", columns=['col1', 'col2',...])时使用DataFrame

此外,这是更改DataFrame列名的简便方法:

df.columns = ['col_name1', 'col_name2', ...]

答案 1 :(得分:0)

使用熊猫时无需打开文件;

data = pandas.read_csv('path_to/your_file.csv')

我总是将inplace=True添加到重命名功能中。

但是,如果您只想从列名中删除数字,则也可以这样做;

data.columns = [col.split()[1] for col in data.columns]

答案 2 :(得分:0)

在读取文件时,您可以显式指定新的列名(除了文件中已经存在的列名),如下所示:

df = pd.read_csv('data.csv', columns=['new_col1', 'new_col2', ...])

但是,如果您不添加columns属性,那么默认情况下,csv文件中提到的列名称将由数据框使用。