当前位置:  开发笔记 > 编程语言 > 正文

如何使用字典键和值重命名Pandas DataFrame中的列?

如何解决《如何使用字典键和值重命名PandasDataFrame中的列?》经验,为你挑选了2个好方法。

我正在构建功能来帮助我从Web加载数据。就加载数据而言,我试图解决的问题是列名称因来源而异。例如,Yahoo Finance数据列标题看起来像“打开”,“高”,“低”,“关闭”,“交易量”,“调整关闭”。Quandl.com将具有包含DATE,VALUE,日期,值等的数据集。所有大写和小写字母将丢弃所有内容以及Value和Adj。封闭在很大程度上意味着相同的东西。我想将名称不同但含义相同的列关联到一个值。例如调整。收盘价和价值均= AC;打开,打开,然后全部打开=O。

因此,我有一个Csv文件(“ Functions // ColumnNameChanges.txt”),该文件存储dict()键和列名的值。

Date,D
Open,O
High,H

然后我写了这个函数来填充我的字典

def DictKeyValuesFromText ():

    Dictionary = {}
    TextFileName = "Functions//ColumnNameChanges.txt"
    with open(TextFileName,'r') as f:
        for line in f:
            x = line.find(",")
            y = line.find("/")
            k = line[0:x]
            v = line[x+1:y]

            Dictionary[k] = v
    return Dictionary

这是print(DictKeyValuesFromText())的输出

{'': '', 'Date': 'D', 'High': 'H', 'Open': 'O'}

下一个功能是我的问题所在

def ChangeColumnNames(DataFrameFileLocation):
    x = DictKeyValuesFromText()
    df = pd.read_csv(DataFrameFileLocation)
    for y in df.columns:
        if y not in x.keys():
            i = input("The column " +  y +  " is not in the list, give a name:")
            df.rename(columns={y:i}) 
        else:
            df.rename(columns={y:x[y]})

    return df

df.rename无法正常工作。这是我得到的输出print(ChangeColumnNames(“ Tvix_data.csv”))

The column Low is not in the list, give a name:L
The column Close is not in the list, give a name:C
The column Volume is not in the list, give a name:V
The column Adj Close is not in the list, give a name:AC
            Date        Open        High         Low       Close    Volume  \
0     2010-11-30  106.269997  112.349997  104.389997  112.349997         0
1     2010-12-01   99.979997  100.689997   98.799998  100.689997         0
2     2010-12-02   98.309998   98.309998   86.499998   86.589998         0

列名称应为D,O,H,L,C,V。我缺少任何帮助。



1> DeepSpace..:

df.rename工作正常,但默认情况下它不在原位。重新分配其返回值或使用inplace=True。它期望使用旧名称作为键,新名称作为值的字典。

df = df.rename({'col_a': 'COL_A', 'col_b': 'COL_B'})

要么

df.rename({'col_a': 'COL_A', 'col_b': 'COL_B'}, inplace=True)



2> Loochie..:

好吧,当您已经将字典存储在变量中时,说

DC = {'': '', 'Date': 'D', 'High': 'H', 'Open': 'O'}

DC现在可以映射到数据框列,例如

df.columns = df.columns.map(DC)

如果您想使用rename()方法,可以简单地使用

df = df.rename(columns = DC)

推荐阅读
围脖上的博博_771
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有