我有一个包含多列的数据框,下面是该数据框中的前 3 列:
data_df = pd.DataFrame({'id':['era','bb','cs','jd','ek','gtf','okg','huf','mji','loj','djjf','wloe','rfm','cok'],
'doc':[1050 ,580,170,8, 7, 220, 45155,305,458,201,48,78,256,358],
'dif':[1,1,1,3,3,2,2,3,4,5,8,7,9,10]})
data_df
id doc dif
0 era 1050 1
1 bb 580 1
2 cs 170 1
3 jd 8 3
4 ek 7 3
5 gtf 220 2
6 okg 45155 2
7 huf 305 3
8 mji 458 4
9 loj 201 5
10 djjf 48 8
11 wloe 78 7
12 rfm 256 9
13 cok 358 10
我想像相反一样更改“dif”列中的值。我的意思是我想把 1 改成 10、2 改成 9、3 改成 8、.... 10 改成 1。我该怎么做? 我试图像下面那样做,但后来我无法确定下次要更正哪些值。
data_df.loc[(data_df.dif == 1),'dif']= 10
data_df['dif'].mask(data_df['dif'] == 2, 9, inplace=True)
任何帮助将不胜感激。提前致谢
答案 0 :(得分:2)
创建一个用于映射的字典 -
dict1 = dict(zip(range(1, 11), range(10,0,-1)))
data_df['dif'] = data_df['dif'].map(dict1)
答案 1 :(得分:2)
new_df = data_df.assign(dif=11 - data_df['dif'])
或者,如果您想就地进行:
data_df['dif'] = 11 - data_df['dif']
答案 2 :(得分:0)
其实很简单:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
46105f7fdf9c postgres "docker-entrypoint.s…" About a minute ago Up 5 seconds 5432/tcp compose_db2_1
fce9b8e2fc62 postgres "docker-entrypoint.s…" About a minute ago Up 4 seconds 5432/tcp compose_db_1
或将 11 替换为 >>> data_df["dif"] = 11 - data_df["dif"]
>>> data_df
id doc dif
0 era 1050 10
1 bb 580 10
2 cs 170 10
3 jd 8 8
4 ek 7 8
5 gtf 220 9
6 okg 45155 9
7 huf 305 8
8 mji 458 7
9 loj 201 6
10 djjf 48 3
11 wloe 78 4
12 rfm 256 2
13 cok 358 1