আর একটি সম্ভাব্য সমাধান, যদি কলামটিতে কেবল স্ট্রিংই না হয় তবে সংখ্যাগুলিও হয়, তা ব্যবহার করা হয় astype(str).str.lower()
বা to_string(na_rep='')
অন্যথায়, প্রদত্ত যে কোনও সংখ্যা একটি স্ট্রিং নয়, যখন নামানো হয় তা ফিরে আসবে NaN
, অতএব:
import pandas as pd
import numpy as np
df=pd.DataFrame(['ONE','Two', np.nan,2],columns=['x'])
xSecureLower = df['x'].to_string(na_rep='').lower()
xLower = df['x'].str.lower()
তারপর আমাদের আছে:
>>> xSecureLower
0 one
1 two
2
3 2
Name: x, dtype: object
এবং না
>>> xLower
0 one
1 two
2 NaN
3 NaN
Name: x, dtype: object
সম্পাদনা করুন:
আপনি যদি এনএএনগুলি হারাতে না চান, তবে মানচিত্রটি ব্যবহার করা আরও ভাল হবে (@ ওউজসিচ-ওয়ালকাজাক এবং @ সিএস 95 মন্তব্য থেকে) এটি এর মতো দেখতে পাবেন will
xSecureLower = df['x'].map(lambda x: x.lower() if isinstance(x,str) else x)
str.casefold
আরও আক্রমণাত্মক কেস ফোল্ডিং স্ট্রিং তুলনা করার জন্য প্রস্তাব দিই । এই উত্তর আরও তথ্য ।