আমার পাইথন পান্ডাস ডেটা ফ্রেমে একটি কলাম রয়েছে যার বুলেয়ান ট্রু / ভুয়া মান রয়েছে তবে আরও গণনার জন্য আমার 1/0 উপস্থাপনা দরকার। তাড়াতাড়ি করার জন্য কি কোনও দ্রুত পান্ডা / ছদ্মবেশী উপায় আছে?
আমার পাইথন পান্ডাস ডেটা ফ্রেমে একটি কলাম রয়েছে যার বুলেয়ান ট্রু / ভুয়া মান রয়েছে তবে আরও গণনার জন্য আমার 1/0 উপস্থাপনা দরকার। তাড়াতাড়ি করার জন্য কি কোনও দ্রুত পান্ডা / ছদ্মবেশী উপায় আছে?
উত্তর:
বুলিয়ান মানগুলির একটি একক কলামকে পূর্ণসংখ্যা 1 বা 0 এর কলামে রূপান্তর করার একটি সুসংগত উপায়:
df["somecolumn"] = df["somecolumn"].astype(int)
somecolumn
। ব্যবহার করা astype(int)
ব্যর্থ হবে। আর একটি পদ্ধতি, যা True
1.0 এবং False
0.0 এ রূপান্তরিত হয় ( df.somecolumn = df.somecolumn.replace({True: 1, False: 0})
astype(float)
একই ফলাফল ব্যবহার করতে এবং তা পেতে পারেননি ?
আপনার ডেটাফ্রেমকে কেবল 1 (ইনট) দ্বারা গুণ করুন
[1]: data = pd.DataFrame([[True, False, True], [False, False, True]])
[2]: print data
0 1 2
0 True False True
1 False False True
[3]: print data*1
0 1 2
0 1 0 1
1 0 0 1
True
হয় 1
পাইথন, এবং অনুরূপভাবে False
হয় 0
* :
>>> True == 1
True
>>> False == 0
True
আপনি শুধু তাদের চিকিত্সা যেন তারা সংখ্যায় ছিল, তারা যে কোনো অপারেশন আপনি তাদের চান সঞ্চালন করতে সক্ষম হওয়া উচিত হয় সংখ্যা:
>>> issubclass(bool, int)
True
>>> True * 5
5
সুতরাং আপনার প্রশ্নের উত্তর দেওয়ার জন্য, কোনও কাজের প্রয়োজন নেই - আপনি যা খুঁজছেন তা ইতিমধ্যে আপনার কাছে রয়েছে।
* দ্রষ্টব্য আমি ব্যবহারের হয় একটি ইংরেজি শব্দ, না পাইথন শব্দ যেমন is
- True
কোন র্যান্ডম হিসাবে একই বস্তুর হবে না 1
।
np.sin(True).dtype
এটি আমার জন্য ভাসমান 16।
df.my_column.mean()
(আপনি পরোক্ষভাবে) শুধু জরিমানা, কিন্তু যখন আমি চেষ্টা করে দেখুন: df.groupby("some_other_column").agg({"my_column":"mean"})
আমি পেতে DataError: No numeric types to aggregate
, তাই এটি প্রদর্শিত হবে তারা না সবসময় একই। শুধু এফওয়াইআই।
bool
কলামগুলি ঠিকঠাক করতে পারেন ।
TypeError: numpy boolean subtract, the
-` ^
অপারেটর, অবহিত করা হয়েছে, বিটওয়াইস_সোর, অপারেটর, বা লজিক্যাল_সক্সর ফাংশনটি ব্যবহার করুন @ @ ব্যবহারকারীর উত্তর ব্যবহারটি এটি ঠিক করে।
bool
যেমন জন্য করে কলাম int
কলাম
আপনি এটি সরাসরি ফ্রেমেও করতে পারেন
In [104]: df = DataFrame(dict(A = True, B = False),index=range(3))
In [105]: df
Out[105]:
A B
0 True False
1 True False
2 True False
In [106]: df.dtypes
Out[106]:
A bool
B bool
dtype: object
In [107]: df.astype(int)
Out[107]:
A B
0 1 0
1 1 0
2 1 0
In [108]: df.astype(int).dtypes
Out[108]:
A int64
B int64
dtype: object
আপনি আপনার ডেটা ফ্রেমের জন্য একটি রূপান্তর ব্যবহার করতে পারেন:
df = pd.DataFrame(my_data condition)
df = df*1
Series.view
বুলিয়ানকে পূর্ণসংখ্যায় রূপান্তর করতে ব্যবহার করুন :
df["somecolumn"] = df["somecolumn"].view('i1')