我正在尝试替换列中的一些ID。
我正在使用pd.read_excel
读取excel文件,并将其存储在数据帧中:
df_A2C = pd.read_excel(file_loc1, index_col=None, na_values=['NA'])
这可以用再现
df_A2C = pd.DataFrame({'FROM_ID': [1, 1, 1, 1, 1],
'TO_ID': [7, 26, 71, 83, 98],
'DURATION_H': [0.528555555555556,
0.512511111111111,
0.432452777777778,
0.599486111111111,
0.590516666666667],
'DIST_KM': [38.4398, 37.38515, 32.57571, 39.26188, 35.53107]})
在此之后,我将检查要使用以下代码替换的值:df_A2C.loc[(df_A2C['FROM_ID'] == 9)]
这会输出:
FROM_ID TO_ID DURATION_H DIST_KM FROM_ID
9 7 1.183683 89.26777 9
9 26 1.167639 88.21312 9
9 71 1.087581 83.40369 9
9 83 1.254614 90.08985 9
9 98 1.245642 86.35904 9
现在,我尝试用8
替换FROM_ID
值9
。
我尝试了以下代码。
df_A2C['FROM_ID'] = df_A2C['FROM_ID'].replace('9','8')
此外,
df_A2C.loc[ df_A2C["FROM_ID"] == "9", "FROM_ID"] = "8"
为了测试结果,我正在进行df_A2C.loc[(df_A2C['FROM_ID'] == 8)]
输出:
FROM_ID TO_ID DURATION_H DIST_KM FROM_ID
这些都不起作用。
我想用8
替换FROM_ID values
9
。我不想创建另一列,只想替换现有的列值。
我在这里犯了什么错误吗
你试过吗
df_A2C['FROM_ID'] = df_A2C['FROM_ID'].apply(lambda x: 8 if x==9 else x)
如果您的值是int
如果您的值是字符串,请使用此
df_A2C['FROM_ID'] = df_A2C['FROM_ID'].apply(lambda x: '8' if x=='9' else x)
基于replace
的解决方案有效,我想问题出在其他地方(例如,您有两列标记为FROM_ID
(
使用输入示例:
df_A2C = pd.DataFrame({'FROM_ID': [1, 1, 1, 1, 1],
'TO_ID': [7, 26, 71, 83, 98],
'DURATION_H': [0.528555555555556,
0.512511111111111,
0.432452777777778,
0.599486111111111,
0.590516666666667],
'DIST_KM': [38.4398, 37.38515, 32.57571, 39.26188, 35.53107]})
不幸的是,没有FROM_ID
等于8的记录,但它们都等于1。所以假设您想将1更改为100。
df_A2C['FROM_ID'] = df_A2C['FROM_ID'].replace(1, 100)
则CCD_ 16表示为
FROM_ID TO_ID DURATION_H DIST_KM
0 100 7 0.528556 38.43980
1 100 26 0.512511 37.38515
2 100 71 0.432453 32.57571
3 100 83 0.599486 39.26188
4 100 98 0.590517 35.53107
正如预期的那样。您也可以调用df_A2C.loc[(df_A2C['FROM_ID'] == 100)]
,返回相同的结果。