සුපිරි සරල තීරු පැවරුම
පැන්ඩාස් දත්ත රාමුවක් ඇණවුම් කරන ලද තීරු නියෝගයක් ලෙස ක්රියාත්මක වේ.
මෙයින් අදහස් කරන්නේ __getitem__
[]
එක්තරා තීරුවක් ලබා ගැනීම සඳහා පමණක් භාවිතා කළ නොහැකි බවයි__setitem__
[] =
නව තීරුවක් පැවරීමට භාවිතා කළ හැකි බවයි.
උදාහරණයක් ලෙස, මෙම dataframe හුදෙක් භාවිතා එය එකතු තීරුවක් පුළුවන් []
accessor
size name color
0 big rose red
1 small violet blue
2 small tulip red
3 small harebell blue
df['protected'] = ['no', 'no', 'no', 'yes']
size name color protected
0 big rose red no
1 small violet blue no
2 small tulip red no
3 small harebell blue yes
දත්ත රාමුවේ දර්ශකය අක්රිය වුවද මෙය ක්රියාත්මක වන බව සලකන්න.
df.index = [3,2,1,0]
df['protected'] = ['no', 'no', 'no', 'yes']
size name color protected
3 big rose red no
2 small violet blue no
1 small tulip red no
0 small harebell blue yes
[] = යන්නට මාර්ගයයි, නමුත් පරෙස්සම් වන්න!
කෙසේ වෙතත්, ඔබට එය තිබේ නම් pd.Series
සහ එය සුචිගත කර ඇති දත්ත රාමුවකට පැවරීමට උත්සාහ කරන්නේ නම්, ඔබ කරදරයට පත්වනු ඇත. උදාහරණය බලන්න:
df['protected'] = pd.Series(['no', 'no', 'no', 'yes'])
size name color protected
3 big rose red yes
2 small violet blue no
1 small tulip red no
0 small harebell blue no
මෙයට හේතුව pd.Series
පෙරනිමියෙන් 0 සිට n දක්වා ගණනය කළ දර්ශකයක් තිබීමයි. පැන්ඩා [] =
ක්රමය "බුද්ධිමත්" වීමට උත්සාහ කරයි
ඇත්ත වශයෙන්ම සිදුවන්නේ කුමක්ද.
ඔබ භාවිතා කරන විට [] =
ක්රමය පැන්ඩා නිහ ly ව වම් අත දත්ත රාමුවේ දර්ශකය සහ දකුණු අත ශ්රේණියේ දර්ශකය භාවිතා කරමින් බාහිර සම්බන්ධතාවයක් හෝ පිටත ඒකාබද්ධ කිරීමක් සිදු කරයි.df['column'] = series
පැති සටහන
මෙය ඉක්මණින් සංජානන විසංවාදයට හේතු වේ, මන්දයත් []=
ක්රමය මඟින් ආදානය මත පදනම්ව විවිධ දේ කිරීමට උත්සාහ කරන අතර පැන්ඩා ක්රියා කරන ආකාරය ඔබ දන්නේ නැත්නම් ප්රති come ලය අනාවැකි කිව නොහැක . එබැවින් []=
කේත පදනම් වලට එරෙහිව මම උපදෙස් දෙමි , නමුත් සටහන් පොතක දත්ත ගවේෂණය කිරීමේදී එය හොඳයි.
ගැටලුව වටා ගමන් කිරීම
ඔබට pd.Series
ඉහළ සිට පහළට පැවරීමට අවශ්ය නම්, හෝ ඔබ code ලදායී කේතයක් කේතනය කරන්නේ නම් සහ දර්ශක අනුපිළිවෙල ගැන ඔබට විශ්වාස නැත්නම්, මේ ආකාරයේ ගැටළුවක් සඳහා එය ආරක්ෂා කිරීම වටී.
ඔබට pd.Series
a np.ndarray
හෝ a දක්වා පහත හෙලීමට හැකිය list
, මෙය උපක්රමය කරයි.
df['protected'] = pd.Series(['no', 'no', 'no', 'yes']).values
හෝ
df['protected'] = list(pd.Series(['no', 'no', 'no', 'yes']))
නමුත් මෙය එතරම් පැහැදිලි නැත.
සමහර කෝඩරය පැමිණ "හේයි, මෙය අතිරික්තයක් ලෙස පෙනේ, මම මෙය දුරස් කරමි".
පැහැදිලි මාර්ගය
පිළිබඳ දර්ශකය සකස් කිරීම pd.Series
පිළිබඳ දර්ශකය විය df
පැහැදිලි වේ.
df['protected'] = pd.Series(['no', 'no', 'no', 'yes'], index=df.index)
හෝ වඩාත් යථාර්ථවාදීව, ඔබට pd.Series
දැනටමත් ලබා ගත හැකිය.
protected_series = pd.Series(['no', 'no', 'no', 'yes'])
protected_series.index = df.index
3 no
2 no
1 no
0 yes
දැන් පැවරිය හැකිය
df['protected'] = protected_series
size name color protected
3 big rose red no
2 small violet blue no
1 small tulip red no
0 small harebell blue yes
සමඟ විකල්ප මාර්ගය df.reset_index()
දර්ශක විසංවාදය ගැටළුව වන බැවින්, දත්ත රාමුවේ දර්ශකය දේවල් නියම නොකළ යුතු යැයි ඔබට හැඟේ නම් , ඔබට හුදෙක් දර්ශකය අතහැර දැමිය හැකිය, මෙය වේගවත් විය යුතුය, නමුත් එය ඉතා පිරිසිදු නොවේ, මන්ද ඔබේ ක්රියාකාරිත්වය දැන් බොහෝ විට කාරණා දෙකක් කරයි.
df.reset_index(drop=True)
protected_series.reset_index(drop=True)
df['protected'] = protected_series
size name color protected
0 big rose red no
1 small violet blue no
2 small tulip red no
3 small harebell blue yes
සටහන df.assign
df.assign
ඔබ කරන්නේ කුමක්ද යන්න වඩාත් පැහැදිලිව ප්රකාශ කරන අතරම , ඇත්ත වශයෙන්ම එයට ඉහත සඳහන් කළ ගැටලු සියල්ලම ඇත[]=
df.assign(protected=pd.Series(['no', 'no', 'no', 'yes']))
size name color protected
3 big rose red yes
2 small violet blue no
1 small tulip red no
0 small harebell blue no
df.assign
ඔබේ තීරුව නොකියන ලෙස බලා සිටින්න self
. එය දෝෂ ඇති කරයි. ශ්රිතයේ මේ ආකාරයේ කෞතුක වස්තු ඇති බැවින් මෙය df.assign
සුවඳින් යුක්ත වේ.
df.assign(self=pd.Series(['no', 'no', 'no', 'yes'])
TypeError: assign() got multiple values for keyword argument 'self'
"හොඳයි, මම self
එවකට භාවිතා නොකරමි" යැයි ඔබට පැවසිය හැකිය . නමුත් නව තර්ක සඳහා සහය දැක්වීම සඳහා අනාගතයේදී මෙම ශ්රිතය වෙනස් වන්නේ කෙසේදැයි කවුද දන්නේ. සමහර විට ඔබගේ තීරුවේ නම පැන්ඩා නව යාවත්කාලීනයක තර්කයක් වනු ඇත, එය යාවත්කාලීන කිරීමේදී ගැටළු ඇති කරයි.