基于Python中列表的索引填充int64 DataFrame列
我有一个包含所有int64类型列的数据帧基于Python中列表的索引填充int64 DataFrame列,python,pandas,Python,Pandas,我有一个包含所有int64类型列的数据帧 City Val ... 0 3 1 1 2 43 2 0 32 3 1 54 然后,我有一个类别名称列表: names = ['Sydney', 'Tokyo', 'Vancouver', 'Toronto'] 我想做的是,根据名称列表索引,即0='Sydney'和1='Tokyo',用城市名称填充城市列 理想结果: City Val ... 0 Toronto
City Val ...
0 3 1
1 2 43
2 0 32
3 1 54
然后,我有一个类别名称列表:
names = ['Sydney', 'Tokyo', 'Vancouver', 'Toronto']
我想做的是,根据名称
列表索引,即0='Sydney'和1='Tokyo',用城市名称填充城市列
理想结果:
City Val ...
0 Toronto 1
1 Vancouver 43
2 Sydney 32
3 Tokyo 54
我尝试了:df['City'].loc[df['City'].isin(名称),df['City']]=names.index(df['City'])
,但出现了一个错误
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
并且,我想将城市列更改为类别类型
df['City'] = df['City'].astype('category')
df['City'].cat.set_categories(names, ordered=True, inplace=True)
与枚举创建的词典一起使用
:
names = ['Sydney', 'Tokyo', 'Vancouver', 'Toronto']
df['City'] = df['City'].map(dict(enumerate(names)))
print (df)
City Val
0 Toronto 1
1 Vancouver 43
2 Sydney 32
3 Tokyo 54
详细信息:
print (dict(enumerate(names)))
{0: 'Sydney', 1: 'Tokyo', 2: 'Vancouver', 3: 'Toronto'}
那么对于分类:
df['City'] = pd.CategoricalIndex(df['City'].map(dict(enumerate(names))),
ordered=True,
categories=names)
或:
与枚举创建的词典一起使用
:
names = ['Sydney', 'Tokyo', 'Vancouver', 'Toronto']
df['City'] = df['City'].map(dict(enumerate(names)))
print (df)
City Val
0 Toronto 1
1 Vancouver 43
2 Sydney 32
3 Tokyo 54
详细信息:
print (dict(enumerate(names)))
{0: 'Sydney', 1: 'Tokyo', 2: 'Vancouver', 3: 'Toronto'}
那么对于分类:
df['City'] = pd.CategoricalIndex(df['City'].map(dict(enumerate(names))),
ordered=True,
categories=names)
或:
你是个传奇,伙计!非常感谢。你是一个传奇,伙计!非常感谢。