Python 上的索引和匹配函数

问题描述 投票:0回答:1

我是Python新手,目前正在开发一个项目,需要使用该软件来执行一些数据清理任务。我想知道在Python上在两个不同形状的数据帧之间执行类似excel的索引和匹配功能是否可行。

这是我的想法

df1 中 x 列下的值本质上是 df2 中列标题的一部分,并且它们具有共同的 y 列(重复的值可能出现在 df1 中,但不会出现在 df2 中)。我想知道df1是否可以更新df2?例如df1["z"].iloc[0] 插入 df2 第 0 行和 a 列。谢谢。

python-3.x pandas dataframe indexing merge
1个回答
0
投票

新示例

import pandas as pd
data1 = {'x': ['a', 'b', 'c', 'd', 'a'], 'y': ['e', 'e', 'f', 'f', 'e'], 'z': [0, 0, 0, 0, 0]}
data2 = {'y': ['e', 'f'], 'a': [1, 5], 'b': [2, 6], 'c': [3, 7], 'd': [4, 8]}

df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)

df1 和 df2

    df1                        df2
    x   y   z            y   a    b    c    d
0   a   e   0       0    e   1    2    3    4
1   b   e   0       1    f   5    6    7    8
2   c   f   0   
3   d   f   0   
4   a   e   0   

正如您提到的,df1 中存在重复的行


代码

out = df1.merge(df2.melt('y', var_name='x'), how='left')

输出:

   x  y  z  value
0  a  e  0      1
1  b  e  0      2
2  c  f  0      7
3  d  f  0      8
4  a  e  0      1

value列是z列的更新值

如果想用value列中的值替换z列中的值,可以使用以下代码:

out = df1.merge(df2.melt('y', var_name='x'), how='left').assign(z=lambda x: x.pop('value'))

   x  y  z
0  a  e  1
1  b  e  2
2  c  f  7
3  d  f  8
4  a  e  1
© www.soinside.com 2019 - 2024. All rights reserved.