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



我是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

我在df1中添加了两(2(个空列。请注意,两个数据集不相等。我遵循了这个解决方案。然而,我收到了这个警告。

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(

它应该会给你寻找的答案

最新更新