【发布时间】:2022-01-15 22:06:42
【问题描述】:
0 1 2 3 4 5 6 7 8 9
0 1 Биир биир NUM num NumType=Card _ _ _ _
1 2 паартаҕа паарта NOUN n Case=Dat|Number=Sing _ _ _ _
2 3 киһи киһи NOUN n Case=Nom|Number=Sing _ _ _ _
3 4 олорор олор VERB v Person=3|Tense=Pres _ _ _ _
4 5 . . PUNCT punct _ _ _ _ _
0 1 2 3 4 5 6 7 8 9
0 1 Биир _ _ _ _ _ _ _ _
1 2 уол _ _ _ _ _ _ _ _
2 3 турар _ _ _ _ _ _ _ _
3 4 уонна _ _ _ _ _ _ _ _
4 5 ааҕар _ _ _ _ _ _ _ _
5 6 . _ _ _ _ _ _ _ _
如果第二个 df 中的值在第一个中,如何替换特定列?
df2[1].isin(df1[1])
0 True
1 False
2 False
3 False
4 False
5 True
对于所有True,替换列2,3,4,5。
输出应该是这样的:
0 1 2 3 4 5 6 7 8 9
0 1 Биир биир NUM num NumType=Card _ _ _ _
1 2 уол _ _ _ _ _ _ _ _
2 3 турар _ _ _ _ _ _ _ _
3 4 уонна _ _ _ _ _ _ _ _
4 5 ааҕар _ _ _ _ _ _ _ _
5 6 . . PUNCT punct _ _ _ _ _
我尝试使用 where 但它给了我一个错误,即 2 个 dfs 的长度不同。
df2[[2, 3, 4, 5]].where(df2[1].isin(df1[1]), df1[[2, 3, 4, 5]].values)
有没有其他方法可以用特定条件替换多个列?
【问题讨论】:
-
你要合并吗?
-
@user17242583 不,我正在尝试检索相同的 df2,但使用 df1 中的列值(如果它们匹配)
-
您的问题令人困惑,因为:1. 下划线一切都难以理解,2. 第一个数据帧和您的预期输出完全不同。 second 数据帧与输出数据帧非常相似,除了在输出 df 中,有几行取自第一个数据帧,这让我觉得您正在寻找合并。
-
@user17242583 在这种情况下,下划线只是空值,它是一种 conllu 格式
标签: python arrays pandas dataframe numpy