如何比较 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
我想做的是将 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
我将两 (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)
它应该会给你想要的答案
我是 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
我将两 (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)
它应该会给你想要的答案