如何替换pandas数据框架中的值



我的目标是创建一个程序来替换pandas数据框中的惟一值。

下面的代码执行操作
# replace values
print(f" {s1['A1'].value_counts().index}")
for i in s1['A1'].value_counts().index:
s1['A1'].replace(i,1)
print(f" {s2['A1'].value_counts().index}")
for i in s2['A1'].value_counts().index:
s2['A1'].replace(i,2)
print("s1 after replacing values")
print(s1)
print("******************")
print("s2 after replacing values")
print(s2)
print("******************")

预期:第一个数据帧"s1"中的值需要替换为"1"。第二数据帧s2中的值应替换为2s。

实际:

Int64Index([8, 5, 2, 7, 6], dtype='int64')
Int64Index([2, 8, 5, 6, 7, 4, 3], dtype='int64')
s1 after replacing values
A1        A2   A3  Class
3    5  0.440671  2.3      1
9    8  0.070035  2.9      1
14   2  0.868410  1.5      1
29   6  0.587487  2.6      1
34   8  0.652936  3.0      1
38   8  0.181508  3.0      1
45   8  0.953230  3.0      1
54   7  0.737604  2.7      1
68   5  0.187475  2.2      1
70   5  0.511385  2.3      1
71   8  0.688134  3.0      1
73   2  0.054908  1.5      1
87   8  0.461797  3.0      1
90   2  0.756518  1.5      1
91   2  0.761448  1.5      1
93   5  0.858036  2.3      1
94   5  0.306459  2.2      1
98   5  0.692804  2.2      1
******************
s2 after replacing values
A1        A2   A3  Class
0    2  0.463134  1.5      3
1    8  0.746065  3.0      3
2    6  0.264391  2.5      2
4    2  0.410438  1.5      3
5    2  0.302902  1.5      2
..  ..       ...  ...    ...
92   5  0.775842  2.3      2
95   5  0.844920  2.2      2
96   5  0.428071  2.2      2
97   5  0.356044  2.2      3
99   5  0.815400  2.2      3

我想了解如何替换这些数据框中的值。

考虑到关于replace方法的文档,这可能会令人困惑。您需要重新分配数据框。

# replace values
print(f" {s1['A1'].value_counts().index}")
for i in s1['A1'].value_counts().index:
print(f"s1['A1'].replace({i},1)")
s1['A1'] = s1['A1'].replace(i,1)
print(f" {s2['A1'].value_counts().index}")
for i in s2['A1'].value_counts().index:
print(f"s2['A1'].replace({i},2)")
s2['A1'] = s2['A1'].replace(i,2)

文档没有这样说:https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.replace.html.

相关内容

  • 没有找到相关文章

最新更新