gpt4 book ai didi

python - 如何用 pandas DataFrame 中的共享列值替换某些行?

转载 作者:太空狗 更新时间:2023-10-30 01:11:09 26 4
gpt4 key购买 nike

假设我有以下 pandas DataFrame:

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 #

因此,Bob 的 DataFrame 中有奇数行,即第 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

如何根据 NameAge 中带有 # 的任何行替换为其他行中给出的正确整数?如果 # 存在,则检查具有相同 Name 值的其他行并替换 #

最佳答案

试试这个,

d= df[df['Age']!='#'].set_index('Name')['Age']
df['Age']=df['Name'].replace(d)

O/P:

     Name Age
0 Alex 10
1 Bob 12
2 Clarke 13
3 Bob 12
4 Bob 12
5 Bob 12
6 Clarke 13

关于python - 如何用 pandas DataFrame 中的共享列值替换某些行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53625099/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com