pandas中的map和replace操作

2021-08-30 10:53:51 字數 2140 閱讀 4164

map可以做乙個對映,對於操作大型的dataframe來說就非常方便了,而且也不容易出錯。replace的作用是替換,這個很好理解。

import numpy as np

import pandas as pd

from pandas import series, dataframe

# create a dataframe

df1 = dataframe(

)print

(df1)

# 新增一列

# df1['gdp'] = series([1000, 3000, 2000])

# print(df1)

''' 人口 城市 gdp

0 1000 北京 1000

1 2000 上海 3000

2 1500 廣州 2000

'''dfp_map =

df1[

'gdp'

]= df1[

'城市'].

map(dfp_map)

print

(df1)

''' 人口 城市 gdp

0 1000 北京 1000

1 2000 上海 2000

2 1500 廣州 3000

總結: 使用map還是比建立series有優勢的,使用map就可以不關心dataframe的index,

只需要關注對應的城市即可。

注意下面的實驗

'''# 再做乙個實驗,新增乙個index

df2 = dataframe(

, index=

['a'

,'b'

,'c'])

print

(df2)

''' 人口 城市

a 1000 北京

b 2000 上海

c 1500 廣州

'''df2[

'gdp'

]= series(

[1000

,2000

,3000])

print

(df2)

''' 人口 城市 gdp

a 1000 北京 nan

b 2000 上海 nan

c 1500 廣州 nan

可以看到答案是nan,這是為什麼呢?因為 series([1000, 2000, 3000])的索引預設是0,1,……

所以就出現了問題。

解決方法是:必須要給series新增指定的索引。

'''# replace in series

s1 = series(np.arange(10)

)print

(s1)

'''1 1

2 2

3 3

4 4

5 5

6 6

7 7

8 8

9 9

dtype: int64

'''print

(s1.replace(

1, np.nan)

)# 會返回乙個新的series,也可以使用字典的方式

'''0 0.0

1 nan

2 2.0

3 3.0

4 4.0

5 5.0

6 6.0

7 7.0

8 8.0

9 9.0

dtype: float64

'''# 還可以採用列表的方式,把多個元素個replace掉

print

(s1.replace([1

,2,3

],[10

,20,30

]))'''

0 0

1 10

2 20

3 30

4 4

5 5

6 6

7 7

8 8

9 9

dtype: int64

'''

對pandas中Series的map函式詳解

series的map方法可以接受乙個函式或含有對映關係的字典型物件。使用map是一種實現元素級轉換以及其他資料清理工作的便捷方式。dataframe中對應的是applymap 函式,當然dataframe還有apply 函式 1 字典對映 import pan程式設計客棧das as pd from...

如何從Oracle的FORM中呼叫REPORT

在選單中呼叫report程式 不傳引數,傳引數可用下面的程式段 run product reports,報表程式名.rep synchronous,runtime,filesystem,null 在form中呼叫report程式 可傳引數 declare pl id paramlist begin ...

pandas中loc iloc ix的區別和使用

在利用pandas處理資料時loc iloc ix對資料的操作很頻繁,所以這裡簡單的介紹一下它們之間的區別和各自的使用。pandas的索引可歸納為3種 loc,標籤索引 location iloc,位置索引 int localtion ix,標籤與位置混合索引 對於ix先按標籤索引嘗試操作,然後再按...