[英]Is there a way to replace all except the first 3 instances of a value in a pandas dataframe column
[英]How do I replace pandas rows with values of another dataframe for all instances of the value in the first df?
我有两个数据框:
df1=
A B C
a 1 3
b 2 3
c 2 2
a 1 4
df2=
A B C
a 1 3.5
现在我需要用df2
中的a
替换df1
中所有出现的a
(在本例中为 2 ),使b
和c
保持不变。 最终的 dataframe 应该是:
df_final=
A B C
b 2 3
c 2 2
a 1 3.5
你的意思是:
df_final = pd.concat((df1[df1['A'].ne('a')], df2))
或者,如果您有多个值,例如a
:
list_special = ['a']
df_final = pd.concat((df1[~df1['A'].isin(list_special)], df2))
如果df2
仅具有重复值的平均值,则可以执行df1.groupby(["A", "B"]).mean().reset_index()
否则,您可以执行以下操作:
In [27]: df = df1.groupby(["A", "B"]).first().merge(df2, how="left", on=["A", "
...: B"])
...: df["C"] = df["C_y"].fillna(df["C_x"])
...: df = df[["A", "B", "C"]]
...: df
Out[27]:
A B C
0 a 1 3.5
1 b 2 3.0
2 c 2 2.0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.