मूल प्रश्न एक विशिष्ट संकीर्ण उपयोग के मामले को संबोधित करता है। उन लोगों के लिए जिन्हें अधिक सामान्य उत्तरों की आवश्यकता है, वे कुछ उदाहरण हैं:
अन्य कॉलम के डेटा का उपयोग करके एक नया कॉलम बनाना
नीचे दिए गए डेटाफ्रेम को देखते हुए:
import pandas as pd
import numpy as np
df = pd.DataFrame([['dog', 'hound', 5],
['cat', 'ragdoll', 1]],
columns=['animal', 'type', 'age'])
In[1]:
Out[1]:
animal type age
----------------------
0 dog hound 5
1 cat ragdoll 1
नीचे हम descriptionउस +ऑपरेशन का उपयोग करके अन्य स्तंभों के एक संयोजन के रूप में एक नया कॉलम जोड़ रहे हैं जो श्रृंखला के लिए ओवरराइड है। फैंसी स्ट्रिंग फॉर्मेटिंग, एफ-स्ट्रिंग्स आदि +स्केलर पर लागू होने के बाद से यहां काम नहीं करेंगे और 'आदिम' मान नहीं:
df['description'] = 'A ' + df.age.astype(str) + ' years old ' \
+ df.type + ' ' + df.animal
In [2]: df
Out[2]:
animal type age description
-------------------------------------------------
0 dog hound 5 A 5 years old hound dog
1 cat ragdoll 1 A 1 years old ragdoll cat
हम 1 yearsबिल्ली के लिए (इसके बजाय 1 year) प्राप्त करते हैं जिसे हम सशर्त का उपयोग करके नीचे फिक्सिंग करेंगे।
सशर्त के साथ एक मौजूदा कॉलम को संशोधित करना
यहां हम मूल animalस्तंभ को अन्य स्तंभों से मानों के साथ बदल रहे हैं, और np.whereमान के आधार पर एक सशर्त प्रतिस्थापन सेट करने के लिए उपयोग कर रहे हैं age:
# append 's' to 'age' if it's greater than 1
df.animal = df.animal + ", " + df.type + ", " + \
df.age.astype(str) + " year" + np.where(df.age > 1, 's', '')
In [3]: df
Out[3]:
animal type age
-------------------------------------
0 dog, hound, 5 years hound 5
1 cat, ragdoll, 1 year ragdoll 1
सशर्त के साथ कई कॉलम संशोधित करना
एक .apply()एकल स्तंभ के बजाय संपूर्ण डेटाफ़्रेम पर कॉल करने के लिए एक अधिक लचीला दृष्टिकोण है :
def transform_row(r):
r.animal = 'wild ' + r.type
r.type = r.animal + ' creature'
r.age = "{} year{}".format(r.age, r.age > 1 and 's' or '')
return r
df.apply(transform_row, axis=1)
In[4]:
Out[4]:
animal type age
----------------------------------------
0 wild hound dog creature 5 years
1 wild ragdoll cat creature 1 year
transform_row(r)फ़ंक्शन के ऊपर कोड में Seriesकिसी दिए गए पंक्ति का प्रतिनिधित्व करने वाला ऑब्जेक्ट लेता है (इसके द्वारा दर्शाया गया है axis=1, प्रत्येक कॉलम के लिए डिफ़ॉल्ट मान प्रदान axis=0करेगा Series)। यह प्रसंस्करण को सरल बनाता है क्योंकि हम स्तंभ नामों का उपयोग करके पंक्ति में वास्तविक 'आदिम' मूल्यों तक पहुंच सकते हैं और दी गई पंक्ति / स्तंभ में अन्य कोशिकाओं की दृश्यता है।
df.loc[df.ID == 103, ['FirstName', 'LastName']] = 'Matt', 'Jones'