我是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
我想做的是将start
和end
列添加到包含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(
它应该会给你寻找的答案