আমি আপনার সিনট্যাক্সটিও কাজ করবে বলে আশা করতাম। সমস্যা দেখা দেয় কারণ আপনি যখন কলাম-তালিকা সিনট্যাক্স ( df[[new1, new2]] = ...
) দিয়ে নতুন কলাম তৈরি করবেন তখন পান্ডাদের ডান হাতের একটি ডেটাফ্রেম হওয়া প্রয়োজন (নোট করুন যে ডেটাফ্রেমের কলামগুলিতে কলামগুলির মতো একই নাম রয়েছে কিনা তা আসলে বিবেচ্য নয়) আপনি তৈরি করছেন)।
আপনার সিনট্যাক্স বিদ্যমান কলামগুলিতে স্কেলারের মান নির্ধারণের জন্য সূক্ষ্মভাবে কাজ করে , এবং পান্ডাস সিঙ্গল-কলাম সিনট্যাক্স ( df[new1] = ...
) ব্যবহার করে নতুন কলামে স্কেলারের মান নির্ধারণেও খুশি । সুতরাং সমাধানটি হয় বেশ কয়েকটি একক-কলাম অ্যাসাইনমেন্টগুলিতে রূপান্তর করা, বা ডান হাতের জন্য উপযুক্ত ডেটা ফ্রেম তৈরি করা।
এখানে বেশ কয়েকটি পদ্ধতি যা কাজ করবে :
import pandas as pd
import numpy as np
df = pd.DataFrame({
'col_1': [0, 1, 2, 3],
'col_2': [4, 5, 6, 7]
})
তারপরে নিম্নলিখিতগুলির একটি:
1) তালিকায় আনপ্যাকিং ব্যবহার করে একটিতে তিনটি অ্যাসাইনমেন্ট:
df['column_new_1'], df['column_new_2'], df['column_new_3'] = [np.nan, 'dogs', 3]
2) DataFrame
সূচকটি মেলানোর জন্য সুবিধামত একটি একক সারি প্রসারিত করে, তাই আপনি এটি করতে পারেন:
df[['column_new_1', 'column_new_2', 'column_new_3']] = pd.DataFrame([[np.nan, 'dogs', 3]], index=df.index)
3) নতুন কলামগুলির সাথে একটি অস্থায়ী ডেটা ফ্রেম তৈরি করুন, তারপরে পরে মূল ডেটা ফ্রেমের সাথে একত্রিত করুন:
df = pd.concat(
[
df,
pd.DataFrame(
[[np.nan, 'dogs', 3]],
index=df.index,
columns=['column_new_1', 'column_new_2', 'column_new_3']
)
], axis=1
)
4) আগের মত, কিন্তু এর join
পরিবর্তে concat
(কম দক্ষ হতে পারে) ব্যবহার:
df = df.join(pd.DataFrame(
[[np.nan, 'dogs', 3]],
index=df.index,
columns=['column_new_1', 'column_new_2', 'column_new_3']
))
5) ডিক ব্যবহার করা আগের দুটি তুলনায় নতুন ডেটা ফ্রেম তৈরি করার আরও "প্রাকৃতিক" উপায়, তবে নতুন কলামগুলি বর্ণমালা অনুসারে বাছাই করা হবে (কমপক্ষে পাইথনের ৩.6 বা ৩.7 এর আগে ):
df = df.join(pd.DataFrame(
{
'column_new_1': np.nan,
'column_new_2': 'dogs',
'column_new_3': 3
}, index=df.index
))
6) .assign()
একাধিক কলাম আর্গুমেন্ট সঙ্গে ব্যবহার করুন ।
আমি @ শূন্যের উত্তরে এই বৈকল্পিকটি পছন্দ করি তবে পূর্ববর্তীটির মতো নতুন কলামগুলিও সর্বদা বর্ণানুক্রমিকভাবে সাজানো হবে, কমপক্ষে পাইথনের প্রাথমিক সংস্করণগুলির সাথে:
df = df.assign(column_new_1=np.nan, column_new_2='dogs', column_new_3=3)
new_cols = ['column_new_1', 'column_new_2', 'column_new_3']
new_vals = [np.nan, 'dogs', 3]
df = df.reindex(columns=df.columns.tolist() + new_cols) # add empty cols
df[new_cols] = new_vals # multi-column assignment works for existing cols
8) শেষ পর্যন্ত তিনটি পৃথক কার্যকে পরাস্ত করা শক্ত:
df['column_new_1'] = np.nan
df['column_new_2'] = 'dogs'
df['column_new_3'] = 3
দ্রষ্টব্য: এই বিকল্পগুলির মধ্যে অনেকগুলি ইতিমধ্যে অন্যান্য উত্তরে coveredাকা পড়েছে : ডেটাফ্রেমে একাধিক কলাম যুক্ত করুন এবং সেগুলি একটি বিদ্যমান কলামের সমান সেট করুন , প্যান্ডাস ডেটা ফ্রেমের সাথে একবারে কয়েকটি কলাম যুক্ত করা সম্ভব? , পান্ডাস ডেটা ফ্রেমে একাধিক খালি কলাম যুক্ত করুন
KeyError: "None of [Index(['column_new_1', 'column_new_2', 'column_new_3'], dtype='object')] are in the [columns]"