簡體   English   中英

Pandas dataframe 替換列值

[英]Pandas dataframe replace column values

我有一個 pandas 數據框,我需要替換列值。 所以我嘗試了以下但沒有按預期工作:

dict_by_nationality = {
            250:0, #'Some-Nation locality', 
            260:0, #'Some-Nation locality'
            270:0, #'Some-Nation locality'
            280:0, #'Some-Nation locality'
            290:0, #'Some-Nation locality'
            440:0, #'Some-Nation locality'
            450:0, #'Some-Nation locality'
            460:0, #'Some-Nation locality'

             310:0, #'Other-Nation locality'

            510:2, #'Other place',
            520:2, #'Other place',
            530:2, #'Other place',
            }

# dat['my column'].apply(dict_by_nationality.get)
# dat['my column'].map(dict_by_nationality).fillna(dat['my column'])
dat['my column'].replace({310: 0}, inplace=True)
print(dat.head())

獲取無值!

更新

我意識到在同一個 dataframe 上進行替換會覆蓋它,需要將其保存到另一個變量然后進行替換。

解決方案

嘗試使用以下命令( df[col].str.strip().str.replace() ),因為這將處理 dataframe 中有未識別空格的情況。

dat['my column'].str.strip().str.replace('310', '0')

我認為您注釋掉的一行應該可以正常工作。 使用我為此目的制作的虛擬數據嘗試以下操作。

建議的解決方案

df[col].map(dictionary).fillna(df[col])

例子

df = pd.DataFrame({'a': list('abcde'), 'b': list('abacd')})
df.a.map({'a': 'A', 'b': 'B'}).fillna(df.a)

Output

0    A
1    B
2    c
3    d
4    e

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM