city state
0 Delhi Delhi
1 Calcutta West Bengal
2 Delhi Delhi
3 Chennai TamilNadu
4 Bokaro Jharkhand
5 Visakhapatnam AndhraPradesh
6 Chennai TamilNadu
7 Wanparti AndhraPradesh
8 Delhi Delhi
9 Mumbai Maharashtra
DF2
city state
0 Pune NaN
1 Visakhapatnam NaN
2 Indore NaN
3 Visakhapatnam NaN
4 Chennai NaN
5 Chennai NaN
6 Indore NaN
7 Chennai NaN
8 Delhi NaN
9 Pune NaN
编码
m = dict(df1.values)
df2.assign(state=df2['state'].fillna(df2['city'].map(m)))
输出:
city state
0 Pune NaN
1 Visakhapatnam AndhraPradesh
2 Indore NaN
3 Visakhapatnam AndhraPradesh
4 Chennai TamilNadu
5 Chennai TamilNadu
6 Indore NaN
7 Chennai TamilNadu
8 Delhi Delhi
9 Pune NaN
3条答案
按热度按时间6ovsh4lw1#
正如您现在评论的“我有一个Pandas DF,其中一些状态值丢失,但可用于DF中其他行的同一城市”,那么您可以在City上使用
groupby
,并从同一城市的其他行条目中获取状态。你可以使用下面的代码。ffill和bfill替换正确State值之前或之后的任何NaN值。给出:
5cnsuln72#
示例
请提供代码不图像和提供所需的输出
DF1
DF2
编码
输出:
o0lyfsai3#
我相信你需要一本字典,把每个城市与它的州Map在一起,那么这将是小菜一碟。
对于印度,this link为印度所有城市和州提供JSON文件格式。
下面是一个示例代码:
如果你想要一个不能覆盖所有情况的快速修复,你可以使用正向填充和反向填充,例如:
这将给予以下输出,如果有一个城市在您的 Dataframe 中没有相应的州,但您想要填充它,则它将是一个带有
bfill()
和ffill()
的NaN:为什么会这样?因为我们按***城市***分组,浦那城市在该组中只有一行,没有关于国家的向后或向前知识来归咎它。
我希望这对你有帮助!