我有一个DataFrame,比如说一列是:
{'university':'A','B','A','C'}
我想将列更改为:
{'university':1,2,1,3}
根据想象的词典:
{'A':1,'B':2,'C':3}
如何完成这项工作?
ps:我解决了原来的问题,这是我自己的电脑设置。 我相应地改变了问题,以便更有帮助。
答案 0 :(得分:1)
我认为您dict
- d
需要map
:
df.university = df.university.map(d)
如果需要将对象编码为枚举类型或分类变量,请使用factorize
:
df.university = pd.factorize(df.university)[0] + 1
样品:
d = {'A':1,'B':2,'C':3}
df = pd.DataFrame({'university':['A','B','A','C']})
df['a'] = df.university.map(d)
df['b'] = pd.factorize(df.university)[0] + 1
print (df)
university a b
0 A 1 1
1 B 2 2
2 A 1 1
3 C 3 3
我尝试重写你的功能:
def given_value(column):
columnlist=column.drop_duplicates()
#reset to default monotonic increasing (0,1,2, ...)
columnlist = columnlist.reset_index(drop=True)
#print (columnlist)
#swap index and values to new Series columnlist_rev
columnlist_rev= pd.Series(columnlist.index, index=columnlist.values)
#map by columnlist_rev
column=column.map(columnlist_rev)
return column
print (given_value(df.university))
0 0
1 1
2 0
3 2
Name: university, dtype: int64
答案 1 :(得分:1)
AttributeError: 'DataFrame' object has no attribute 'column'
您的回答是在异常声明中写的! DataFrame对象没有名为column
的属性,这意味着您无法在代码中的任何位置调用DataFrame.column。我相信您的问题存在于此处发布的内容之外,可能是您第一次将数据作为DataFrame导入的部分附近。我的猜测是,当您命名列时,您执行了类似df.column = [university]
而不是df.columns = [university]
的操作。这很重要。如果您仔细阅读Traceback,您将能够准确找出引发错误的行。
此外,在您发布的功能中,您不需要参数df,因为在此过程中任何时候都不使用该参数。