【问题标题】:Replace multiple column values if a value is the same in both data frames如果两个数据框中的值相同,则替换多个列值
【发布时间】: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


【解决方案1】:

一种方法是:1.concat、2.drop_duplicates、3.filter、4.sort,这里是:

df = pd.concat([df2, df1]).drop_duplicates('1', keep='last')
df = df[df['1'].isin(df2['1'])].sort_values('0')

df:

0 1 2 3 4 5 6 7 8 9
0 1 Биир биир NUM num NumType=Card _ _ _ _
1 2 уол _ _ _ _ _ _ _ _
2 3 турар _ _ _ _ _ _ _ _
3 4 уонна _ _ _ _ _ _ _ _
4 5 ааҕар _ _ _ _ _ _ _ _
4 5 . . PUNCT punct _ _ _ _ _

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-23
    • 2020-06-23
    • 1970-01-01
    • 2022-10-05
    • 2018-01-04
    • 1970-01-01
    相关资源
    最近更新 更多