উত্তর:
আমি যদি সঠিকভাবে বুঝতে পারি তবে অ্যাসাইনমেন্টটি পূরণ করা উচিত:
>>> import numpy as np
>>> import pandas as pd
>>> df = pd.DataFrame({"A": [1,2,3], "B": [2,3,4]})
>>> df
A B
0 1 2
1 2 3
2 3 4
>>> df["C"] = ""
>>> df["D"] = np.nan
>>> df
A B C D
0 1 2 NaN
1 2 3 NaN
2 3 4 NaN
df
খালিটি থাকে, আপনি ব্যবহার করতে পারেন df['new'] = pd.Series()
(নীচে আমার উত্তর দেখুন)
এই সম্পর্কিত প্রশ্নে ডিএসএমের উত্তর যুক্ত করতে এবং তৈরি করতে আমি এই পদ্ধতিকে দুটি ক্ষেত্রে বিভক্ত করব:
একটি একক কলাম যুক্ত করা: নতুন কলামগুলিতে খালি মান নির্ধারণ করুন, যেমন df['C'] = np.nan
একাধিক কলাম যুক্ত করা হচ্ছে: ডেটাফ্রেমের কলাম সূচীতে নতুন কলামগুলি যুক্ত করতে আমি পান্ডার .reindex(columns=[...])
পদ্ধতিটি ব্যবহার করার পরামর্শ দেব । এটি এর সাথে একাধিক নতুন সারি যুক্ত করার জন্যও কাজ করে .reindex(rows=[...])
। নোট করুন যে পান্ডাদের নতুন সংস্করণ (v> 0.20) আপনাকে axis
স্পষ্টভাবে columns
বা এর উপর বরাদ্দ করার পরিবর্তে কোনও কীওয়ার্ড নির্দিষ্ট করার মঞ্জুরি দেয় rows
।
এখানে একাধিক কলাম যুক্ত করার উদাহরণ রয়েছে:
mydf = mydf.reindex(columns = mydf.columns.tolist() + ['newcol1','newcol2'])
অথবা
mydf = mydf.reindex(mydf.columns.tolist() + ['newcol1','newcol2'], axis=1) # version > 0.20.0
আপনি বিদ্যমান ডেটাফ্রেমে সর্বদা একটি নতুন (খালি) ডেটাফ্রেমে সংলগ্ন করতে পারেন তবে এটি আমার কাছে পাইথোনিক হিসাবে মনে হয় না :)
version >= 0.20.0
ডেটাফ্রেম মোছার উদাহরণ এবং নতুন কলামগুলি সারি হিসাবে যুক্ত করে। version < 0.20.0
পান্ডাস সংস্করণে সূক্ষ্ম কাজের জন্য উদাহরণ0.24.1
, axis=1
না version = 0.25
। আপডেট হওয়া সংস্করণটি অন্তর্ভুক্ত করার জন্য আমি আপনার উত্তরটি সংশোধন করার চেষ্টা করেছি, তবে আমাকে @ টেনলুকাস এবং @ আইল_রাফা দ্বারা প্রত্যাখ্যান করা হয়েছিল। আমি আশা করি যে আপনার প্রতিক্রিয়া কেন তাদের পক্ষে কাজ করছে না - এই বোঝার জন্য সংগ্রামরত সবাই - যেমন আমি ছিলাম - কমপক্ষে এই মন্তব্যটি আসে।
একটি এমনকি সহজ সমাধান হ'ল:
df = df.reindex(columns = header_list)
যেখানে "শিরোলেখের তালিকা" হ'ল শিরোনামগুলির একটি তালিকা যা আপনি উপস্থিত হতে চান।
তালিকায় অন্তর্ভুক্ত থাকা কোনও শিরোনাম যা ইতিমধ্যে ডেটাফ্রেমে পাওয়া যায়নি নীচে ফাঁকা ঘর দিয়ে যুক্ত করা হবে।
তাই যদি
header_list = ['a','b','c', 'd']
তারপরে সি এবং ডি ফাঁকা ঘর সহ কলাম হিসাবে যুক্ত হবে
থেকে শুরু করে v0.16.0
, DF.assign()
নতুন কলাম (দায়িত্ব অর্পণ করা ব্যবহার করা যেতে পারে একক / একাধিক একটি পর্যন্ত) DF
। এই কলামগুলি শেষে বর্ণমালা অনুসারে .োকানো হবে DF
।
আপনি যে ফিরিয়ে দেওয়া ডেটাফ্রেমে সরাসরি জড়িত ক্রিয়াকলাপগুলি পরিচালনা করতে চান সেই ক্ষেত্রে সাধারণ কার্যভারের তুলনায় এটি সুবিধাজনক হয়ে ওঠে।
DF
@ ডিএসএম দ্বারা প্রদর্শিত একই নমুনাটি বিবেচনা করুন :
df = pd.DataFrame({"A": [1,2,3], "B": [2,3,4]})
df
Out[18]:
A B
0 1 2
1 2 3
2 3 4
df.assign(C="",D=np.nan)
Out[21]:
A B C D
0 1 2 NaN
1 2 3 NaN
2 3 4 NaN
নোট করুন যে এটি নতুন তৈরি হওয়াগুলি সহ পূর্ববর্তী সমস্ত কলামগুলির সাথে একটি অনুলিপি প্রদান করে। সেই DF
অনুসারে মূলটি সংশোধন করার জন্য এটি ব্যবহার করুন: df = df.assign(...)
কারণ এটি inplace
বর্তমানে অপারেশন সমর্থন করে না ।
আমি পছন্দ করি:
df['new'] = pd.Series(dtype='your_required_dtype')
আপনার যদি খালি ডেটাফ্রেম থাকে তবে এই সমাধানটি নিশ্চিত করে যে কেবলমাত্র NaN
যুক্ত কোনও নতুন সারি যুক্ত করা হয়নি।
যদি dtype
নির্দিষ্ট না করা হয় তবে নতুন পান্ডাস সংস্করণ একটি তৈরি করে DeprecationWarning
।
আপনি যদি একটি তালিকা থেকে কলামের নাম যুক্ত করতে চান
df=pd.DataFrame()
a=['col1','col2','col3','col4']
for i in a:
df[i]=np.nan
@ ইমুনসিংয়ের উত্তর একাধিক কলাম যুক্ত করার জন্য সত্যিই দুর্দান্ত তবে আমি পাইথন ২.7 এ এটি আমার পক্ষে কাজ করতে পারিনি। পরিবর্তে, আমি এই কাজগুলি পেয়েছি:
mydf = mydf.reindex(columns = np.append( mydf.columns.values, ['newcol1','newcol2'])
নীচের কোডটি "আমার বিদ্যমান ডেটাফ্রেমে আমি কীভাবে খালি কলামগুলি সংযুক্ত করব" প্রশ্নটি সম্বোধন করে। অনুরূপ সমস্যার সমাধান এক জায়গায় রাখার স্বার্থে, আমি এটি এখানে যুক্ত করছি।
1 টি দেখুন (1-64 থেকে কলামের নাম সহ 64 টি অতিরিক্ত কলাম তৈরি করতে)
m = list(range(1,65,1))
dd=pd.DataFrame(columns=m)
df.join(dd).replace(np.nan,'') #df is the dataframe that already exists
পদ্ধতির 2 (1-64 থেকে কলামের নাম সহ 64 টি অতিরিক্ত কলাম তৈরি করতে)
df.reindex(df.columns.tolist() + list(range(1,65,1)), axis=1).replace(np.nan,'')
আপনি করতে পারেন
df['column'] = None #This works. This will create a new column with None type
df.column = None #This will work only when the column is already present in the dataframe
df.insert(index_to_insert_at, column_header, init_value)
একটি নির্দিষ্ট সূচীতে নতুন কলাম সন্নিবেশ করতে ব্যবহার করতে পারেন ।
cost_tbl.insert(1, "col_name", "")
উপরের বিবৃতিটি প্রথম কলামের পরে একটি খালি কলাম wouldোকাবে।
N/A
?