از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
روش ادغام DataFrames در Pandas – merge()، join()، append()، concat() و update()
سرفصلهای مطلب
معرفی
Pandas طیف وسیعی از روش ها و عملکردها را برای دستکاری داده ها از جمله ادغام DataFrames ارائه می دهد. ادغام DataFrames به شما این امکان را می دهد که هم بدون تغییر منبع داده اصلی یک DataFrame جدید ایجاد کنید و هم منبع داده اصلی را تغییر دهید.
اگر با SQL یا نوع مشابهی از داده های جدولی آشنا هستید، احتمالاً با این اصطلاح آشنا هستید join
، که به معنای ترکیب DataFrame برای تشکیل یک DataFrame جدید است. اگر مبتدی هستید، درک کامل انواع پیوستن سخت است (درونی، بیرونی، چپ، راست). در این آموزش انواع اتصالات را با مثال هایی بررسی می کنیم.
تمرکز اصلی ما خواهد بود روی با استفاده از merge()
و concat()
کارکرد. با این حال، روشهای ادغام دیگر را مورد بحث قرار میدهیم تا جایگزینهای عملی تا حد امکان به شما ارائه دهیم.
برای این آموزش از نسخه پاندا استفاده می کنیم 1.1.4 و نسخه NumPy 1.19.4.
ادغام DataFrames با استفاده از ادغام()
بیایید با تنظیم DataFrames خود شروع کنیم، که برای بقیه آموزش استفاده خواهیم کرد.
df1
شامل لیست کاربران خیالی ما با نام، ایمیل و شناسه می شود.
import pandas as pd
df1 = pd.DataFrame({'user_id': ('id001', 'id002', 'id003', 'id004', 'id005', 'id006', 'id007'),
'first_name': ('Rivi', 'Wynnie', 'Kristos', 'Madalyn', 'Tobe', 'Regan', 'Kristin'),
'last_name': ('Valti', 'McMurty', 'Ivanets', 'Max', 'Riddich', 'Huyghe', 'Illis'),
'email': ('(email protected)', '(email protected)', '(email protected)',
'(email protected)', '(email protected)', '(email protected)', '(email protected)')
})
هنگام طراحی پایگاه داده، حفظ تنظیمات پروفایل (مانند رنگ پسزمینه، پیوند تصویر آواتار، اندازه قلم و غیره) در جدولی جداگانه از دادههای کاربر (ایمیل، تاریخ اضافهشده و غیره) عمل خوبی در نظر گرفته میشود. سپس این جداول می توانند یک رابطه یک به یک داشته باشند.
برای شبیه سازی این سناریو با ایجاد همین کار را انجام خواهیم داد df2
با URL های تصویر و شناسه های کاربری:
df2 = pd.DataFrame({'user_id': ('id001', 'id002', 'id003', 'id004', 'id005'),
'image_url': ('http://example.com/img/id001.png', 'http://example.com/img/id002.jpg',
'http://example.com/img/id003.bmp', 'http://example.com/img/id004.jpg',
'http://example.com/img/id005.png')
})
در اینجا روش شکل گیری DataFrame ما آمده است:
# df1
user_id first_name last_name email
0 id001 Rivi Valti (email protected)
1 id002 Wynnie McMurty (email protected)
2 id003 Kristos Ivanets (email protected)
3 id004 Madalyn Max (email protected)
4 id005 Tobe Riddich (email protected)
5 id006 Regan Huyghe (email protected)
6 id007 Kristin Illis (email protected)
#df2
user_id image_url
0 id001 http://example.com/img/id001.png
1 id002 http://example.com/img/id002.jpg
2 id003 http://example.com/img/id003.bmp
3 id004 http://example.com/img/id004.jpg
4 id005 http://example.com/img/id005.png
بیایید این DataFrames را با هم ترکیب کنیم merge()
تابع. ابتدا به تمام گزینه هایی که این تابع می تواند در یک نگاه بپذیرد نگاهی بیندازید:
pd.merge(left, right, how='inner', روی=None, left_on=None, right_on=None,
left_index=False, right_index=False, sort=True,
suffixes=('_x', '_y'), copy=True, indicator=False,
validate=None)
اکثر این گزینه ها دارای یک مقدار پیش فرض هستند به جز مقدار ترک کرد و درست. این دو پارامتر نام DataFrames هستند که ادغام خواهیم کرد. خود تابع یک DataFrame جدید برمی گرداند که ما در آن ذخیره می کنیم df3_merged
متغیر.
کد زیر را در پوسته پایتون خود وارد کنید:
df3_merged = pd.merge(df1, df2)
از آنجایی که هر دو DataFrame ما دارای ستون هستند user_id
با همین نام، merge()
تابع به طور خودکار به دو جدول مطابقت می پیوندد روی آن کلید اگر دو ستون با نام های مختلف داشتیم، می توانستیم استفاده کنیم left_on='left_column_name'
و right_on='right_column_name'
برای تعیین کلیدها روی هر دو DataFrame به صراحت.
اجازه دهید print را df3_merged
متغیر برای دیدن محتویات آن:
user_id first_name last_name email image_url
0 id001 Rivi Valti (email protected) http://example.com/img/id001.png
1 id002 Wynnie McMurty (email protected) http://example.com/img/id002.jpg
2 id003 Kristos Ivanets (email protected) http://example.com/img/id003.bmp
3 id004 Madalyn Max (email protected) http://example.com/img/id004.jpg
4 id005 Tobe Riddich (email protected) http://example.com/img/id005.png
متوجه خواهید شد که df3_merged
دارای تنها 5 ردیف در حالی که اصلی است df1
7. چرا اینطور است؟
هنگامی که مقدار پیش فرض از how
پارامتر تنظیم شده است inner
، یک DataFrame جدید از تقاطع از دیتا فریم های چپ و راست. بنابراین، اگر الف user_id
در یکی از جداول وجود ندارد، در DataFrame ادغام شده نخواهد بود.
حتی اگر جای ردیفهای چپ و راست عوض شود، این موضوع صادق میماند:
df3_merged = pd.merge(df2, df1)
نتایج همچنان:
user_id image_url first_name last_name email
0 id001 http://example.com/img/id001.png Rivi Valti (email protected)
1 id002 http://example.com/img/id002.jpg Wynnie McMurty (email protected)
2 id003 http://example.com/img/id003.bmp Kristos Ivanets (email protected)
3 id004 http://example.com/img/id004.jpg Madalyn Max (email protected)
4 id005 http://example.com/img/id005.png Tobe Riddich (email protected)
کاربران با شناسه 'id006'
و 'id007'
بخشی از DataFrame های ادغام شده نیستند زیرا آنها را قطع نمی کنند روی هر دو جدول
با این حال، مواقعی وجود دارد که میخواهیم از یکی از DataFrameها به عنوان DataFrame اصلی استفاده کنیم و تمام ردیفهای آن را حتی اگر همه آنها با یکدیگر تلاقی نداشته باشند، قرار دهیم. این است که می گویند، به همه کاربران ما، در حالی که image_url
اختیاری است.
چگونه؟ با استفاده از merge()
، می توانیم عبور کنیم 'left'
استدلال به how
پارامتر:
df_left_merge = pd.merge(df1, df2, how='left')
print(df_left_merge)
با یک چپ پیوستن، ما تمام عناصر DataFrame سمت چپ را گنجانده ایم (df1
) و هر عنصر از DataFrame سمت راست (df2
). با اجرای کد بالا این را نشان می دهد:
user_id first_name last_name email image_url
0 id001 Rivi Valti (email protected) http://example.com/img/id001.png
1 id002 Wynnie McMurty (email protected) http://example.com/img/id002.jpg
2 id003 Kristos Ivanets (email protected) http://example.com/img/id003.bmp
3 id004 Madalyn Max (email protected) http://example.com/img/id004.jpg
4 id005 Tobe Riddich (email protected) http://example.com/img/id005.png
5 id006 Regan Huyghe (email protected) NaN
6 id007 Kristin Illis (email protected) NaN
سلول هایی که هیچ مقدار تطبیقی با DataFrame سمت چپ ندارند با آنها پر می شوند NaN
.
چرا یک پیوستن درست را امتحان نمی کنیم؟ DataFrame ادغام شده زیر را ایجاد کنید:
df_right_merge = pd.merge(df1, df2, how='right')
print(df_right_merge)
همانطور که ممکن است انتظار داشته باشید، حق عضویت هر مقدار از DataFrame سمت چپ که با DataFrame سمت راست مطابقت دارد را برمی گرداند:
user_id first_name last_name email image_url
0 id001 Rivi Valti (email protected) http://example.com/img/id001.png
1 id002 Wynnie McMurty (email protected) http://example.com/img/id002.jpg
2 id003 Kristos Ivanets (email protected) http://example.com/img/id003.bmp
3 id004 Madalyn Max (email protected) http://example.com/img/id004.jpg
4 id005 Tobe Riddich (email protected) http://example.com/img/id005.png
مانند هر ردیف در df2
دارای ارزش در df1
، این right
join مشابه است inner
در این مورد بپیوندید
بیایید نگاهی به outer
می پیوندد. برای بهتر نشان دادن روش کار آنها، اجازه دهید swap قرار دادن DataFrames ما و ایجاد 2 متغیر جدید برای هر دو اتصال چپ و خارجی:
df_left = pd.merge(df2, df1, how='left', indicator=True)
df_outer = pd.merge(df2, df1, how='outer', indicator=True)
print(df_left)
print(df_outer)
به خاطر داشته باشید که DataFrame سمت چپ ما است df2
و DataFrame مناسب است df1
. استفاده کردن how='outer'
تطبیق DataFrames را ادغام می کند روی کلید اما همچنین شامل مقادیری است که گم شده یا مطابقت ندارند.
ما همچنین اضافه کردیم indicator
پرچم گذاری کنید و روی آن تنظیم کنید True
به طوری که پانداها یک ستون اضافی اضافه می کنند _merge
تا انتهای DataFrame ما. این ستون به ما می گوید که آیا یک ردیف در سمت چپ، راست یا هر دو DataFrame پیدا شده است.
این df_left
متغیر به شکل زیر است:
user_id image_url first_name last_name email _merge
0 id001 http://example.com/img/id001.png Rivi Valti (email protected) both
1 id002 http://example.com/img/id002.jpg Wynnie McMurty (email protected) both
2 id003 http://example.com/img/id003.bmp Kristos Ivanets (email protected) both
3 id004 http://example.com/img/id004.jpg Madalyn Max (email protected) both
4 id005 http://example.com/img/id005.png Tobe Riddich (email protected) both
با این حال، df_outer
این داده ها را دارد:
user_id image_url first_name last_name email _merge
0 id001 http://example.com/img/id001.png Rivi Valti (email protected) both
1 id002 http://example.com/img/id002.jpg Wynnie McMurty (email protected) both
2 id003 http://example.com/img/id003.bmp Kristos Ivanets (email protected) both
3 id004 http://example.com/img/id004.jpg Madalyn Max (email protected) both
4 id005 http://example.com/img/id005.png Tobe Riddich (email protected) both
5 id006 NaN Regan Huyghe (email protected) right_only
6 id007 NaN Kristin Illis (email protected) right_only
توجه کنید که در df_outer
DataFrame id006
و id007
فقط در DataFrame سمت راست وجود دارد (در این مورد چنین است df1
). اگر بخواهیم اتصالات چپ و بیرونی را بدون تعویض مکان مقایسه کنیم، برای هر دوی آنها نتایج یکسانی خواهیم داشت.
ادغام DataFrames با استفاده از پیوستن()
بر خلاف merge()
که روشی از نمونه پانداها است، join()
روشی از خود DataFrame است. این بدان معنی است که می توانیم از آن مانند یک روش استاتیک استفاده کنیم روی DataFrame: DataFrame.join(other, روی=None, how='left', lsuffix='', rsuffix='', sort=False)
.
DataFrame که ما به آن می گوییم join()
از دیتا فریم سمت چپ ما خواهد بود. DataFrame در other
آرگومان DataFrame مناسب ما خواهد بود.
این روی
پارامتر می تواند یک یا چند (('key1', 'key2' ...)
) آرگومان هایی برای تعریف کلید تطبیق، while how
پارامتر یکی از آرگومان های دسته (چپ، راست، بیرونی، داخلی) را می گیرد و تنظیم می شود left
به صورت پیش فرض.
بیایید برای پیوستن تلاش کنیم df2
به df1
:
df_join = df1.join(df2, rsuffix='_right')
print(df_join)
مانند merge()
تابع، join()
تابع به طور خودکار سعی می کند کلیدها (ستون ها) را با همان نام مطابقت دهد. در مورد ما، آن است user_id
کلید
کد بالا این را چاپ می کند:
user_id first_name last_name email user_id_right image_url
0 id001 Rivi Valti (email protected) id001 http://example.com/img/id001.png
1 id002 Wynnie McMurty (email protected) id002 http://example.com/img/id002.jpg
2 id003 Kristos Ivanets (email protected) id003 http://example.com/img/id003.bmp
3 id004 Madalyn Max (email protected) id004 http://example.com/img/id004.jpg
4 id005 Tobe Riddich (email protected) id005 http://example.com/img/id005.png
5 id006 Regan Huyghe (email protected) NaN NaN
6 id007 Kristin Illis (email protected) NaN NaN
احتمالا متوجه یک “ستون تکراری” به نام شده اید user_id_right
. اگر نمی خواهید آن ستون نمایش داده شود، می توانید آن را تنظیم کنید user_id
ستون ها به عنوان شاخص روی هر دو ستون تا بدون پسوند به هم بپیوندد:
df_join_no_duplicates = df1.set_index('user_id').join(df2.set_index('user_id'))
print(df_join_no_duplicates)
با این کار از شر آن خلاص می شویم user_id
ستون و در عوض آن را به عنوان ستون شاخص قرار دهید. این یک DataFrame تمیزتر را در اختیار ما قرار می دهد:
first_name last_name email image_url
user_id
id001 Rivi Valti (email protected) http://example.com/img/id001.png
id002 Wynnie McMurty (email protected) http://example.com/img/id002.jpg
id003 Kristos Ivanets (email protected) http://example.com/img/id003.bmp
id004 Madalyn Max (email protected) http://example.com/img/id004.jpg
id005 Tobe Riddich (email protected) http://example.com/img/id005.png
id006 Regan Huyghe (email protected) NaN
id007 Kristin Illis (email protected) NaN
ادغام DataFrames با استفاده از ضمیمه ()
همانطور که اسناد رسمی پانداها اشاره می کند، از آن زمان concat()
و append()
روشها کپیهای جدیدی از DataFrames را برمیگردانند، استفاده بیش از حد از این روشها میتواند بر عملکرد برنامه شما تأثیر بگذارد.
وقتی میخواهید دو DataFrame را فقط در محور ردیف ادغام کنید، Append بسیار مفید است. این بدان معناست که به جای تطبیق داده ها روی ستون های آنها، ما یک DataFrame جدید می خواهیم که شامل تمام ردیف های 2 DataFrame باشد.
بیایید ضمیمه کنیم df2
به df1
و print نتایج:
df_append = df1.append(df2, ignore_index=True)
print(df_append)
استفاده کردن append()
با DataFrames مطابقت نخواهد داشت روی هر کلید فقط DataFrame دیگر را به اولی اضافه می کند و یک کپی از آن را برمی گرداند. اگر شکلهای DataFrames مطابقت نداشته باشند، پانداها سلولهای بیهمتا را با NaN جایگزین میکنند.
خروجی برای الحاق دو DataFrame به شکل زیر است:
user_id first_name last_name email image_url
0 id001 Rivi Valti (email protected) NaN
1 id002 Wynnie McMurty (email protected) NaN
2 id003 Kristos Ivanets (email protected) NaN
3 id004 Madalyn Max (email protected) NaN
4 id005 Tobe Riddich (email protected) NaN
5 id006 Regan Huyghe (email protected) NaN
6 id007 Kristin Illis (email protected) NaN
7 id001 NaN NaN NaN http://example.com/img/id001.png
8 id002 NaN NaN NaN http://example.com/img/id002.jpg
9 id003 NaN NaN NaN http://example.com/img/id003.bmp
10 id004 NaN NaN NaN http://example.com/img/id004.jpg
11 id005 NaN NaN NaN http://example.com/img/id005.png
اکثر کاربران انتخاب می کنند concat()
بالای append()
از آنجایی که گزینه تطبیق کلید و محور را نیز فراهم می کند.
ادغام DataFrames با استفاده از concat()
الحاق در مقایسه با آن کمی انعطاف پذیرتر است merge()
و join()
زیرا به ما این امکان را می دهد که DataFrames را به صورت عمودی (در ردیف) یا افقی (ستون) ترکیب کنیم.
مبادله این است که هر داده ای که مطابقت نداشته باشد از بین می رود. در اینجا تابع کامل با پارامترها است:
pandas.concat(objs, axis=0, join='outer', ignore_index=False, keys=None,
levels=None, names=None, verify_integrity=False, sort=False, copy=True)
در اینجا متداول ترین پارامترهای مورد استفاده برای concat()
تابع:
objs
لیستی از اشیاء DataFrame ((df1, df2, …)) است که باید به هم متصل شوندaxis
جهت الحاق را مشخص می کند،0
برای ردیف عاقلانه و1
برای ستون عاقلانهjoin
می تواند باشدinner
(تقاطع) یاouter
(اتحاد. اتصال)ignore_index
به طور پیش فرض رویFalse
که به مقادیر شاخص اجازه می دهد همانطور که در DataFrames اصلی بودند باقی بمانند، می تواند باعث تکرار مقادیر شاخص شود. اگر تنظیم شودTrue
، مقادیر اصلی را نادیده می گیرد و مقادیر شاخص را مجدداً به ترتیب متوالی اختصاص می دهدkeys
به ما اجازه می دهد تا یک شاخص سلسله مراتبی بسازیم. آن را به عنوان سطح دیگری از شاخص اضافه شده در نظر بگیرید روی سمت چپ بیرونی DataFrame که به ما کمک می کند تا زمانی که مقادیر منحصر به فرد نیستند، شاخص ها را تشخیص دهیم
بیایید یک DataFrame جدید با انواع ستون های مشابه ایجاد کنیم df2
، اما این یکی شامل image_url
برای id006
و id007
:
df2_addition = pd.DataFrame({'user_id': ('id006', 'id007'),
'image_url': ('http://example.com/img/id006.png',
'http://example.com/img/id007.jpg')
})
به منظور پیوستن df2
و df2_addition
از نظر ردیف، میتوانیم آنها را در فهرستی بهعنوان علامت ارسال کنیم objs
پارامتر و DataFrame حاصل را به یک متغیر جدید اختصاص دهید:
df_row_concat = pd.concat((df2, df2_addition))
print(df_row_concat)
ما با موفقیت مقادیر از دست رفته را پر کردیم:
user_id image_url
0 id001 http://example.com/img/id001.png
1 id002 http://example.com/img/id002.jpg
2 id003 http://example.com/img/id003.bmp
3 id004 http://example.com/img/id004.jpg
4 id005 http://example.com/img/id005.png
0 id006 http://example.com/img/id006.png
1 id007 http://example.com/img/id007.jpg
با این حال، نگاهی به شاخص ها در ستون سمت چپ بیندازید. شاخص ها 0
و 1
در حال تکرار هستند. برای بدست آوردن مقادیر شاخص کاملاً جدید و منحصر به فرد، عبور می کنیم True
به ignore_index
پارامتر:
df_row_concat = pd.concat((df2, df2_addition), ignore_index=True)
حالا ما df_row_concat
دارای مقادیر شاخص منحصر به فرد:
user_id image_url
0 id001 http://example.com/img/id001.png
1 id002 http://example.com/img/id002.jpg
2 id003 http://example.com/img/id003.bmp
3 id004 http://example.com/img/id004.jpg
4 id005 http://example.com/img/id005.png
5 id006 http://example.com/img/id006.png
6 id007 http://example.com/img/id007.jpg
همانطور که قبلا ذکر کردیم، الحاق می تواند هم به صورت افقی و هم به صورت عمودی کار کند. برای اتصال دو DataFrame به یکدیگر از نظر ستونی، باید آن را تغییر دهیم axis
مقدار از پیش فرض 0
به 1
:
df_column_concat = pd.concat((df1, df_row_concat), axis=1)
print(df_column_concat)
متوجه خواهید شد که مانند ادغام، مطابقت با دو جدول کار نمی کند روی یک کلید:
user_id first_name last_name email user_id image_url
0 id001 Rivi Valti (email protected) id001 http://example.com/img/id001.png
1 id002 Wynnie McMurty (email protected) id002 http://example.com/img/id002.jpg
2 id003 Kristos Ivanets (email protected) id003 http://example.com/img/id003.bmp
3 id004 Madalyn Max (email protected) id004 http://example.com/img/id004.jpg
4 id005 Tobe Riddich (email protected) id005 http://example.com/img/id005.png
5 id006 Regan Huyghe (email protected) id006 http://example.com/img/id006.png
6 id007 Kristin Illis (email protected) id007 http://example.com/img/id007.jpg
اگر DataFrame سمت راست ما حتی الف نداشت user_id
ستون، این الحاق همچنان همان نتیجه را نشان می دهد. این concat()
تابع چسب ها دو DataFrame با هم، با در نظر گرفتن مقادیر شاخص های DataFrames و شکل جدول
مانند تطبیق کلید را انجام نمی دهد merge()
یا join()
. با تغییر دادن ترکیبات مختلف الحاق را امتحان کنید join
پارامتر برای دیدن تفاوت ها!
ادغام DataFrames با استفاده از combination_first() و به روز رسانی()
در برخی موارد، ممکن است بخواهید داده های از دست رفته در DataFrame خود را با ادغام آن با DataFrame دیگری پر کنید. با انجام این کار، تمام مقادیر گم نشده را در اولین DataFrame نگه می دارید و در عین حال همه را جایگزین می کنید. NaN
مقادیر با مقادیر غیر مفقود موجود از DataFrame دوم (در صورت وجود).
برای این مثال، ما import NumPy برای استفاده NaN
ارزش های. اگر پانداها را با pip
، NumPy باید قبلاً نصب شده باشد.
کد زیر را در پوسته یا فایل اسکریپت پایتون تایپ کنید:
import numpy as np
df_first = pd.DataFrame({'COL 1': ('X', 'X', np.nan),
'COL 2': ('X', np.nan, 'X'),
'COL 3': (np.nan, 'X', 'X')},
index=range(0, 3))
df_second = pd.DataFrame({'COL 1': (np.nan, 'O', 'O'),
'COL 2': ('O', 'O', 'O')},
index=range(0, 3))
print(df_first)
print(df_second)
این df_first
DataFrame دارای 3 ستون و 1 مقدار گم شده در هر یک از آنها است:
COL 1 COL 2 COL 3
0 X X NaN
1 X NaN X
2 NaN X X
در حالی که df_second
فقط 2 ستون و یک مقدار از دست رفته در ستون اول دارد:
COL 1 COL 2
0 NaN O
1 O O
2 O O
ما میتوانیم استفاده کنیم df_second
به پچ مقادیر از دست رفته در df_first
با تمام مقادیر مربوطه:
df_tictactoe = df_first.combine_first(df_second)
print(df_tictactoe)
همانطور که قبلا ذکر شد، با استفاده از combine_first()
روش فقط جایگزین خواهد شد NaN
مقادیر را به ترتیب فهرست بندی می کند، و تمام مقادیر غیر از دست رفته را در اولین DataFrame به همان صورت باقی می گذارد:
COL 1 COL 2 COL 3
0 X X NaN
1 X O X
2 O X X
از طرف دیگر، اگر بخواهیم مقادیر در را بازنویسی کنیم df_first
با مقادیر مربوطه از df_second
(صرف نظر از اینکه NaN باشند یا نباشند)، ما از آن استفاده می کنیم update()
روش.
بیایید ابتدا یک DataFrame دیگر به کد خود اضافه کنیم:
df_third = pd.DataFrame({'COL 1': ('O'), 'COL 2': ('O'), 'COL 3': ('O')})
print(df_third)
شکل (1، 3) است – 1 ردیف و سه ستون، به استثنای شاخص:
COL 1 COL 2 COL 3
0 O O O
حالا بیایید به روز رسانی کنیم df_first
با مقادیر از df_third
:
df_first.update(df_third)
print(df_first)
به خاطر داشته باشید که بر خلاف combine_first()
، update()
DataFrame جدیدی را بر نمی گرداند. را اصلاح می کند df_first
در محل، با تغییر مقادیر مربوطه:
COL 1 COL 2 COL 3
0 O O O
1 X NaN X
2 NaN X X
این overwrite
پارامتر از update()
تابع تنظیم شده است True
به صورت پیش فرض. به همین دلیل است که به جای تنها، همه مقادیر مربوطه را تغییر می دهد NaN
ارزش های. ما می توانیم آن را تغییر دهیم False
فقط برای تعویض NaN
ارزش های:
df_tictactoe.update(df_first, overwrite=False)
print(df_tictactoe)
در اینجا آخرین وضعیت ما است df_tictactoe
DataFrame:
COL 1 COL 2 COL 3
0 X X O
1 X O X
2 O X X
ما نه تنها مقادیر را با موفقیت به روز کردیم، بلکه در بازی تیک تاک تو نیز برنده شدیم!
نتیجه
Pandas ابزارهای قدرتمندی برای ادغام DataFrames فراهم می کند. اما تصمیم گیری در مورد زمان استفاده از چه چیزی می تواند سخت باشد. در حالی که اکثر مواقع merge()
عملکرد کافی است، برای برخی موارد ممکن است بخواهید از آن استفاده کنید concat()
برای ادغام ردیفی یا استفاده از join()
با پسوندها، یا خلاص شدن از شر مقادیر از دست رفته با combine_first()
و update()
. حتی می توانید ردیف هایی از داده ها را با آن اضافه کنید append()
.
از عملکردی استفاده کنید که بیشتر با آن راحت هستید و برای کار در دستتان بهترین است. چگونه این توابع به شما در دستکاری داده ها در پانداها کمک می کند؟
(برچسبها به ترجمه)# python
منتشر شده در 1403-01-13 08:23:03