如何比较 Python 中的两 (2) 个不相等的数据帧并将元素从一个数据帧分配给另一个数据帧?

How to compare two (2) unequal dataframes in Python and assign elements from the one to another?

我是 python 初学者,我遇到了这个问题。我定义了以下两个数据集。

df1 = pd.DataFrame(np.array([10, 20, 30]),
               columns=['number1'])
df1
       number1
0       10
1       20
2       30


df2 = pd.DataFrame(np.array([[5, 6, 10, 12, 20, 25, 30, 50], [12.3, 15.5, 17.8, 19.0, 25, 18, 18.4, 15.8], [15.3, 18.5, 17.8, 11.0, 28, 17, 19.5, 11.1]]),
                   index=['number1', 'start', 'end']).T
df2
   number1  start   end
0      5.0   12.3  15.3
1      6.0   15.5  18.5
2     10.0   17.8  17.8
3     12.0   19.0  11.0
4     20.0   25.0  28.0
5     25.0   18.0  17.0
6     30.0   18.4  19.5
7     50.0   15.8  11.1

我想做的是将 startend 列添加到包含 df2 的相应元素的 df1 数据框。 (当且仅当 number1==number1 时)。预期输出如下:

   number1  start   end
0     10.0   17.8  17.8
1     20.0   25.0  28.0
2     30.0   18.4  19.5

我将两 (2) 个空列附加到 df1。 请注意,两个数据集是不相等的。我遵循了这个解决方案。但是我收到了这个警告。

def equal(df1, df2, ignore_index=True):
    if df1['number1'].values == df2['number1'].values:
        df1['start'].values = df2['start'].values
        df1['end'].values = df2['end'].values


 <ipython-input-47-7137be14ffba>:2: DeprecationWarning: elementwise comparison failed; this will raise an error in the future.
      if df1['number1'].values == df2['number1'].values:

你有什么建议吗?

使用df.merge():

In [240]: res = df1.merge(df2, on='number1')

In [241]: res
Out[241]: 
   number1  start   end
0       10   17.8  17.8
1       20   25.0  28.0
2       30   18.4  19.5

你可以简单地合并两个数据框

df1.merge(df2)

number1 start   end
0   10  17.8    17.8
1   20  25.0    28.0
2   30  18.4    19.5

您可以使用 df.merge (df2)

它应该会给你想要的答案