假设我有以下Pandas数据框:
import pandas as pd
data = [['Alex',10],['Bob',12],['Clarke',13], ['Bob', '#'], ['Bob', '#'], ['Bob', '#']]
df = pd.DataFrame(data,columns=['Name','Age'], dtype=float)
print(df)
Name Age
0 Alex 10
1 Bob 12
2 Clarke 13
3 Bob #
4 Bob #
5 Bob #
因此,DataFrame中对于Bob的行数是奇数,即第3、4和5行。这些值始终为“#”,而不是12。第1行显示Bob应该是12,而不是“#”。
在这个例子中,使用replace()很容易解决这个问题:
df = df.replace("#", 12)
print(df)
Name Age
0 Alex 10
1 Bob 12
2 Clarke 13
3 Bob 12
4 Bob 12
5 Bob 12
然而,这对于更大的数据框不起作用,例如
Name Age
0 Alex 10
1 Bob 12
2 Clarke 13
3 Bob #
4 Bob #
5 Bob #
6 Clarke #
第6行应为6 Clarke 13
。
如何根据Name
替换Age
中带有#
的任何一行,并使用其他行中给定的正确整数进行替换?如果#
存在,则检查具有相同名称值的其他行并替换#
。
#
,这很奇怪,我知道。 - ShanZhengYang