![](/img/trans.png)
[英]Python: How to approach mapping a json object onto a dataframe int64 based id column
[英]Populate an int64 DataFrame column based on index of a list in Python
我有一個帶有所有int64類型列的DataFrame。
City Val ...
0 3 1
1 2 43
2 0 32
3 1 54
然后,我列出了類別名稱:
names = ['Sydney', 'Tokyo', 'Vancouver', 'Toronto']
我要基於names
列表索引(即0 ='Sydney'和1 ='Tokyo'),使用城市名稱填充“城市”列。
理想的結果:
City Val ...
0 Toronto 1
1 Vancouver 43
2 Sydney 32
3 Tokyo 54
我試過了: df['City'].loc[df['City'].isin(names), 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)
將Series.map
與enumerate
創建的字典一起使用:
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)
要么:
df['City'] = (df['City'].map(dict(enumerate(names)))
.astype('category', ordered=True, categories=names))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.