স্ট্রিং ইন্ট না হিসাবে প্যান্ডাস ডেটাফ্রেম কলাম আমদানি করুন


103

আমি নিম্নলিখিত সিএসভিটি স্ট্রিং হিসাবে ইন্ট্রোর্ড হিসাবে নয় হিসাবে আমদানি করতে চাই। পান্ডাস রিড_সিএসভি এটিকে স্বয়ংক্রিয়ভাবে ইন্ট 64৪ এ রূপান্তর করে তবে আমার এই কলামটি স্ট্রিং হিসাবে প্রয়োজন।

ID
00013007854817840016671868
00013007854817840016749251
00013007854817840016754630
00013007854817840016781876
00013007854817840017028824
00013007854817840017963235
00013007854817840018860166


df = read_csv('sample.csv')

df.ID
>>

0   -9223372036854775808
1   -9223372036854775808
2   -9223372036854775808
3   -9223372036854775808
4   -9223372036854775808
5   -9223372036854775808
6   -9223372036854775808
Name: ID

দুর্ভাগ্যক্রমে রূপান্তরকারী ব্যবহার একই ফলাফল দেয়।

df = read_csv('sample.csv', converters={'ID': str})
df.ID
>>

0   -9223372036854775808
1   -9223372036854775808
2   -9223372036854775808
3   -9223372036854775808
4   -9223372036854775808
5   -9223372036854775808
6   -9223372036854775808
Name: ID

4
এটি এমন একটি বিষয় স্পষ্টভাবে হাইলাইট করে যেখানে রূপান্তরকারীরা কাজ করতে ব্যর্থ হয়। সুতরাং, এটি উপরে বর্ণিত প্রশ্ন ছাড়াও দরকারী।
ডেভ ক্লার্ক

উত্তর:


157

কেবল পুনরাবৃত্তি করতে চান এটি পান্ডাস> = 0.9.1 এ কাজ করবে:

In [2]: read_csv('sample.csv', dtype={'ID': object})
Out[2]: 
                           ID
0  00013007854817840016671868
1  00013007854817840016749251
2  00013007854817840016754630
3  00013007854817840016781876
4  00013007854817840017028824
5  00013007854817840017963235
6  00013007854817840018860166

আমি পূর্ণসংখ্যার ওভারফ্লোগুলি সনাক্তকরণ সম্পর্কে একটি সমস্যা তৈরি করছি।

সম্পাদনা: সমাধানটি দেখুন এখানে: https://github.com/pydata/pandas/issues/2247


14
এছাড়া মনে হচ্ছে, তাই সব কলাম স্ট্রিং হিসেবে ব্যাখ্যা করা যেতে চান, এক নিম্নলিখিতগুলি করতে পারেন: dtype = str
স্টিভ

মনে হচ্ছে খালি ক্ষেতগুলি এখনও এনপি.নান হিসাবে চলে এসেছে
জোশিয়াহ

4
এখানে একই প্রশ্ন। তবে আমি keep_default_na = মিথ্যা আমার সমস্যার সমাধান করেছি।
জেটক্লাউড

মন্তব্য করার জন্য আপনাকে ধন্যবাদ। আমাকে dypte = str এবং keep_default_na = মিথ্যাও ব্যবহার করতে হয়েছিল যাতে নাল মানগুলি ন্যান না।
Ross117

19

এটি সম্ভবত এটি করার জন্য সবচেয়ে মার্জিত উপায় নয় তবে এটি কাজটি করে।

In[1]: import numpy as np

In[2]: import pandas as pd

In[3]: df = pd.DataFrame(np.genfromtxt('/Users/spencerlyon2/Desktop/test.csv', dtype=str)[1:], columns=['ID'])

In[4]: df
Out[4]: 
                       ID
0  00013007854817840016671868
1  00013007854817840016749251
2  00013007854817840016754630
3  00013007854817840016781876
4  00013007854817840017028824
5  00013007854817840017963235
6  00013007854817840018860166

'/Users/spencerlyon2/Desktop/test.csv'আপনার ফাইলের পথটি কেবল প্রতিস্থাপন করুন


8

পান্ডাস 1.0 এর পর থেকে এটি অনেক বেশি সোজা হয়ে গেল। এটি dtype 'স্ট্রিং' হিসাবে কলাম 'ID' পড়বে:

pd.read_csv('sample.csv',dtype={'ID':'string'})

আমরা এই শুরু করা গাইডটিতে দেখতে পাচ্ছি , 'স্ট্রিং' dtype চালু করা হয়েছে (স্ট্রিংগুলি dtype 'অবজেক্ট হিসাবে বিবেচনা করার আগে)'।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.