gpt4 book ai didi

python - 将数据帧中的值替换为其他行中的值 "target row"

转载 作者:行者123 更新时间:2023-12-01 02:22:27 25 4
gpt4 key购买 nike

我正在尝试执行以下操作:当“content”的值为 NaN 时,将其值替换为目标行的值。下面是我的代码,它通过迭代所有行来实现这一点,但它很丑陋而且很慢。我怀疑应该有一种更优雅/快速的方法来使用 mask 来做到这一点,所以我想有人可能会在这方面启发我:

Inputs:

import pandas as pd
d = {'content': [1, 3, None, 6, 1, 59, None], 'target': [0,1,0,2,4,5,4]}
df = pd.DataFrame(data=d)
print(df)
for index, row in df.iterrows():
if df.loc[index,'content']!=df.loc[index,'content']: # To detect NaN
df.loc[index,'content']=df.loc[df.loc[index,'target'],'content']
print(df)

outputs:
content target
0 1.0 0
1 3.0 1
2 NaN 0
3 6.0 2
4 1.0 4
5 59.0 5
6 NaN 4

content target
0 1.0 0
1 3.0 1
2 1.0 0
3 6.0 2
4 1.0 4
5 59.0 5
6 1.0 4

提前致谢!

注意:只有当该行的内容为“NaN”时,才应将内容更改为目标行的内容。

附加问题:当内容为 59 或 6 时,我可以做同样的事情吗?非常感谢!

最佳答案

通过使用fillna

df.content=df.content.fillna(df.target)
df
Out[268]:
content target
0 1.0 0
1 3.0 1
2 6.0 0
3 2.0 2
4 1.0 4
5 59.0 5
6 5.0 5

编辑

df.ffill()
Out[487]:
content target
0 1.0 0
1 3.0 1
2 6.0 0
3 6.0 2
4 1.0 4
5 59.0 5
6 59.0 5

我想你需要这个

df.content.reindex(df.target)
Out[492]:
target
0 1.0
1 3.0
0 1.0
2 6.0
4 1.0
5 59.0
5 59.0
Name: content, dtype: float64

分配回来后

df.content=df.content.reindex(df.target).values
df
Out[494]:
content target
0 1.0 0
1 3.0 1
2 1.0 0
3 6.0 2
4 1.0 4
5 59.0 5
6 59.0 5

让我再编辑一下

df.content.fillna(df.content.reindex(df.target).reset_index(drop=True))
Out[508]:
0 1.0
1 3.0
2 1.0
3 6.0
4 1.0
5 59.0
6 1.0
Name: content, dtype: float64

关于python - 将数据帧中的值替换为其他行中的值 "target row",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47823460/

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