本文整理匯總了Python中pandas.core.reshape.merge.merge方法的典型用法代碼示例。如果您正苦於以下問題:Python merge.merge方法的具體用法?Python merge.merge怎麽用?Python merge.merge使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類pandas.core.reshape.merge
的用法示例。
在下文中一共展示了merge.merge方法的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: test_merge_on_multikey
# 需要導入模塊: from pandas.core.reshape import merge [as 別名]
# 或者: from pandas.core.reshape.merge import merge [as 別名]
def test_merge_on_multikey(self, left, right, join_type):
on_cols = ['key1', 'key2']
result = (left.join(right, on=on_cols, how=join_type)
.reset_index(drop=True))
expected = pd.merge(left, right.reset_index(),
on=on_cols, how=join_type)
tm.assert_frame_equal(result, expected)
result = (left.join(right, on=on_cols, how=join_type, sort=True)
.reset_index(drop=True))
expected = pd.merge(left, right.reset_index(),
on=on_cols, how=join_type, sort=True)
tm.assert_frame_equal(result, expected)
示例2: test_merge_index_singlekey_right_vs_left
# 需要導入模塊: from pandas.core.reshape import merge [as 別名]
# 或者: from pandas.core.reshape.merge import merge [as 別名]
def test_merge_index_singlekey_right_vs_left(self):
left = DataFrame({'key': ['a', 'b', 'c', 'd', 'e', 'e', 'a'],
'v1': np.random.randn(7)})
right = DataFrame({'v2': np.random.randn(4)},
index=['d', 'b', 'c', 'a'])
merged1 = merge(left, right, left_on='key',
right_index=True, how='left', sort=False)
merged2 = merge(right, left, right_on='key',
left_index=True, how='right', sort=False)
assert_frame_equal(merged1, merged2.loc[:, merged1.columns])
merged1 = merge(left, right, left_on='key',
right_index=True, how='left', sort=True)
merged2 = merge(right, left, right_on='key',
left_index=True, how='right', sort=True)
assert_frame_equal(merged1, merged2.loc[:, merged1.columns])
示例3: test_merge_index_singlekey_inner
# 需要導入模塊: from pandas.core.reshape import merge [as 別名]
# 或者: from pandas.core.reshape.merge import merge [as 別名]
def test_merge_index_singlekey_inner(self):
left = DataFrame({'key': ['a', 'b', 'c', 'd', 'e', 'e', 'a'],
'v1': np.random.randn(7)})
right = DataFrame({'v2': np.random.randn(4)},
index=['d', 'b', 'c', 'a'])
# inner join
result = merge(left, right, left_on='key', right_index=True,
how='inner')
expected = left.join(right, on='key').loc[result.index]
assert_frame_equal(result, expected)
result = merge(right, left, right_on='key', left_index=True,
how='inner')
expected = left.join(right, on='key').loc[result.index]
assert_frame_equal(result, expected.loc[:, result.columns])
示例4: test_merge_different_column_key_names
# 需要導入模塊: from pandas.core.reshape import merge [as 別名]
# 或者: from pandas.core.reshape.merge import merge [as 別名]
def test_merge_different_column_key_names(self):
left = DataFrame({'lkey': ['foo', 'bar', 'baz', 'foo'],
'value': [1, 2, 3, 4]})
right = DataFrame({'rkey': ['foo', 'bar', 'qux', 'foo'],
'value': [5, 6, 7, 8]})
merged = left.merge(right, left_on='lkey', right_on='rkey',
how='outer', sort=True)
exp = pd.Series(['bar', 'baz', 'foo', 'foo', 'foo', 'foo', np.nan],
name='lkey')
tm.assert_series_equal(merged['lkey'], exp)
exp = pd.Series(['bar', np.nan, 'foo', 'foo', 'foo', 'foo', 'qux'],
name='rkey')
tm.assert_series_equal(merged['rkey'], exp)
exp = pd.Series([2, 3, 1, 1, 4, 4, np.nan], name='value_x')
tm.assert_series_equal(merged['value_x'], exp)
exp = pd.Series([6, np.nan, 5, 8, 5, 8, 7], name='value_y')
tm.assert_series_equal(merged['value_y'], exp)
示例5: test_merge_join_key_dtype_cast
# 需要導入模塊: from pandas.core.reshape import merge [as 別名]
# 或者: from pandas.core.reshape.merge import merge [as 別名]
def test_merge_join_key_dtype_cast(self):
# #8596
df1 = DataFrame({'key': [1], 'v1': [10]})
df2 = DataFrame({'key': [2], 'v1': [20]})
df = merge(df1, df2, how='outer')
assert df['key'].dtype == 'int64'
df1 = DataFrame({'key': [True], 'v1': [1]})
df2 = DataFrame({'key': [False], 'v1': [0]})
df = merge(df1, df2, how='outer')
# GH13169
# this really should be bool
assert df['key'].dtype == 'object'
df1 = DataFrame({'val': [1]})
df2 = DataFrame({'val': [2]})
lkey = np.array([1])
rkey = np.array([2])
df = merge(df1, df2, left_on=lkey, right_on=rkey, how='outer')
assert df['key_0'].dtype == 'int64'
示例6: test_merge_all_na_column
# 需要導入模塊: from pandas.core.reshape import merge [as 別名]
# 或者: from pandas.core.reshape.merge import merge [as 別名]
def test_merge_all_na_column(self, series_of_dtype,
series_of_dtype_all_na):
# GH 25183
df_left = pd.DataFrame(
{'key': series_of_dtype, 'value': series_of_dtype_all_na},
columns=['key', 'value'])
df_right = pd.DataFrame(
{'key': series_of_dtype, 'value': series_of_dtype_all_na},
columns=['key', 'value'])
expected = pd.DataFrame({
'key': series_of_dtype,
'value_x': series_of_dtype_all_na,
'value_y': series_of_dtype_all_na,
}, columns=['key', 'value_x', 'value_y'])
actual = df_left.merge(df_right, on='key')
assert_frame_equal(actual, expected)
示例7: test_other_datetime_unit
# 需要導入模塊: from pandas.core.reshape import merge [as 別名]
# 或者: from pandas.core.reshape.merge import merge [as 別名]
def test_other_datetime_unit(self):
# GH 13389
df1 = pd.DataFrame({'entity_id': [101, 102]})
s = pd.Series([None, None], index=[101, 102], name='days')
for dtype in ['datetime64[D]', 'datetime64[h]', 'datetime64[m]',
'datetime64[s]', 'datetime64[ms]', 'datetime64[us]',
'datetime64[ns]']:
df2 = s.astype(dtype).to_frame('days')
# coerces to datetime64[ns], thus sholuld not be affected
assert df2['days'].dtype == 'datetime64[ns]'
result = df1.merge(df2, left_on='entity_id', right_index=True)
exp = pd.DataFrame({'entity_id': [101, 102],
'days': np.array(['nat', 'nat'],
dtype='datetime64[ns]')},
columns=['entity_id', 'days'])
tm.assert_frame_equal(result, exp)
示例8: test_other_timedelta_unit
# 需要導入模塊: from pandas.core.reshape import merge [as 別名]
# 或者: from pandas.core.reshape.merge import merge [as 別名]
def test_other_timedelta_unit(self, unit):
# GH 13389
df1 = pd.DataFrame({'entity_id': [101, 102]})
s = pd.Series([None, None], index=[101, 102], name='days')
dtype = "m8[{}]".format(unit)
df2 = s.astype(dtype).to_frame('days')
assert df2['days'].dtype == 'm8[ns]'
result = df1.merge(df2, left_on='entity_id', right_index=True)
exp = pd.DataFrame({'entity_id': [101, 102],
'days': np.array(['nat', 'nat'],
dtype=dtype)},
columns=['entity_id', 'days'])
tm.assert_frame_equal(result, exp)
示例9: test_overlapping_columns_error_message
# 需要導入模塊: from pandas.core.reshape import merge [as 別名]
# 或者: from pandas.core.reshape.merge import merge [as 別名]
def test_overlapping_columns_error_message(self):
df = DataFrame({'key': [1, 2, 3],
'v1': [4, 5, 6],
'v2': [7, 8, 9]})
df2 = DataFrame({'key': [1, 2, 3],
'v1': [4, 5, 6],
'v2': [7, 8, 9]})
df.columns = ['key', 'foo', 'foo']
df2.columns = ['key', 'bar', 'bar']
expected = DataFrame({'key': [1, 2, 3],
'v1': [4, 5, 6],
'v2': [7, 8, 9],
'v3': [4, 5, 6],
'v4': [7, 8, 9]})
expected.columns = ['key', 'foo', 'foo', 'bar', 'bar']
assert_frame_equal(merge(df, df2), expected)
# #2649, #10639
df2.columns = ['key1', 'foo', 'foo']
msg = (r"Data columns not unique: Index\(\[u?'foo', u?'foo'\],"
r" dtype='object'\)")
with pytest.raises(MergeError, match=msg):
merge(df, df2)
示例10: test_merge_on_datetime64tz_empty
# 需要導入模塊: from pandas.core.reshape import merge [as 別名]
# 或者: from pandas.core.reshape.merge import merge [as 別名]
def test_merge_on_datetime64tz_empty(self):
# https://github.com/pandas-dev/pandas/issues/25014
dtz = pd.DatetimeTZDtype(tz='UTC')
right = pd.DataFrame({'date': [pd.Timestamp('2018', tz=dtz.tz)],
'value': [4.0],
'date2': [pd.Timestamp('2019', tz=dtz.tz)]},
columns=['date', 'value', 'date2'])
left = right[:0]
result = left.merge(right, on='date')
expected = pd.DataFrame({
'value_x': pd.Series(dtype=float),
'date2_x': pd.Series(dtype=dtz),
'date': pd.Series(dtype=dtz),
'value_y': pd.Series(dtype=float),
'date2_y': pd.Series(dtype=dtz),
}, columns=['value_x', 'date2_x', 'date', 'value_y', 'date2_y'])
tm.assert_frame_equal(result, expected)
示例11: test_merge_on_index_with_more_values
# 需要導入模塊: from pandas.core.reshape import merge [as 別名]
# 或者: from pandas.core.reshape.merge import merge [as 別名]
def test_merge_on_index_with_more_values(self, how):
# GH 24212
# pd.merge gets [-1, -1, 0, 1] as right_indexer, ensure that -1 is
# interpreted as a missing value instead of the last element
df1 = pd.DataFrame([[1, 2], [2, 4], [3, 6], [4, 8]],
columns=['a', 'b'])
df2 = pd.DataFrame([[3, 30], [4, 40]],
columns=['a', 'c'])
df1.set_index('a', drop=False, inplace=True)
df2.set_index('a', inplace=True)
result = pd.merge(df1, df2, left_index=True, right_on='a', how=how)
expected = pd.DataFrame([[1, 2, np.nan],
[2, 4, np.nan],
[3, 6, 30.0],
[4, 8, 40.0]],
columns=['a', 'b', 'c'])
expected.set_index('a', drop=False, inplace=True)
assert_frame_equal(result, expected)
示例12: test_merge_on_ints_floats_warning
# 需要導入模塊: from pandas.core.reshape import merge [as 別名]
# 或者: from pandas.core.reshape.merge import merge [as 別名]
def test_merge_on_ints_floats_warning(self):
# GH 16572
# merge will produce a warning when merging on int and
# float columns where the float values are not exactly
# equal to their int representation
A = DataFrame({'X': [1, 2, 3]})
B = DataFrame({'Y': [1.1, 2.5, 3.0]})
expected = DataFrame({'X': [3], 'Y': [3.0]})
with tm.assert_produces_warning(UserWarning):
result = A.merge(B, left_on='X', right_on='Y')
assert_frame_equal(result, expected)
with tm.assert_produces_warning(UserWarning):
result = B.merge(A, left_on='Y', right_on='X')
assert_frame_equal(result, expected[['Y', 'X']])
# test no warning if float has NaNs
B = DataFrame({'Y': [np.nan, np.nan, 3.0]})
with tm.assert_produces_warning(None):
result = B.merge(A, left_on='Y', right_on='X')
assert_frame_equal(result, expected[['Y', 'X']])
示例13: test_merge_incompat_infer_boolean_object
# 需要導入模塊: from pandas.core.reshape import merge [as 別名]
# 或者: from pandas.core.reshape.merge import merge [as 別名]
def test_merge_incompat_infer_boolean_object(self):
# GH21119: bool + object bool merge OK
df1 = DataFrame({'key': Series([True, False], dtype=object)})
df2 = DataFrame({'key': [True, False]})
expected = DataFrame({'key': [True, False]}, dtype=object)
result = pd.merge(df1, df2, on='key')
assert_frame_equal(result, expected)
result = pd.merge(df2, df1, on='key')
assert_frame_equal(result, expected)
# with missing value
df1 = DataFrame({'key': Series([True, False, np.nan], dtype=object)})
df2 = DataFrame({'key': [True, False]})
expected = DataFrame({'key': [True, False]}, dtype=object)
result = pd.merge(df1, df2, on='key')
assert_frame_equal(result, expected)
result = pd.merge(df2, df1, on='key')
assert_frame_equal(result, expected)
示例14: tests_merge_categorical_unordered_equal
# 需要導入模塊: from pandas.core.reshape import merge [as 別名]
# 或者: from pandas.core.reshape.merge import merge [as 別名]
def tests_merge_categorical_unordered_equal(self):
# GH-19551
df1 = DataFrame({
'Foo': Categorical(['A', 'B', 'C'], categories=['A', 'B', 'C']),
'Left': ['A0', 'B0', 'C0'],
})
df2 = DataFrame({
'Foo': Categorical(['C', 'B', 'A'], categories=['C', 'B', 'A']),
'Right': ['C1', 'B1', 'A1'],
})
result = pd.merge(df1, df2, on=['Foo'])
expected = DataFrame({
'Foo': pd.Categorical(['A', 'B', 'C']),
'Left': ['A0', 'B0', 'C0'],
'Right': ['A1', 'B1', 'C1'],
})
assert_frame_equal(result, expected)
示例15: test_self_join_multiple_categories
# 需要導入模塊: from pandas.core.reshape import merge [as 別名]
# 或者: from pandas.core.reshape.merge import merge [as 別名]
def test_self_join_multiple_categories(self):
# GH 16767
# non-duplicates should work with multiple categories
m = 5
df = pd.DataFrame({
'a': ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'] * m,
'b': ['t', 'w', 'x', 'y', 'z'] * 2 * m,
'c': [letter
for each in ['m', 'n', 'u', 'p', 'o']
for letter in [each] * 2 * m],
'd': [letter
for each in ['aa', 'bb', 'cc', 'dd', 'ee',
'ff', 'gg', 'hh', 'ii', 'jj']
for letter in [each] * m]})
# change them all to categorical variables
df = df.apply(lambda x: x.astype('category'))
# self-join should equal ourselves
result = pd.merge(df, df, on=list(df.columns))
assert_frame_equal(result, df)