কীভাবে আমি পান্ডে একটি নির্দিষ্ট কলাম সূচীতে একটি কলাম সন্নিবেশ করব?


186

আমি কী পান্ডে কোনও নির্দিষ্ট কলাম সূচীতে একটি কলাম inোকাতে পারি?

import pandas as pd
df = pd.DataFrame({'l':['a','b','c','d'], 'v':[1,2,1,2]})
df['n'] = 0

এই কলামে করা হবে nশেষ কলাম হিসাবে df, কিন্তু একটি উপায় আছে বলুন নয় dfলাগাতে nশুরুতে?


কোনও ডেটা ফ্রেমের শুরুতে (বামতম শেষের দিকে) একটি কলাম সন্নিবেশ করান - আরও সমাধান + কোনও ক্রম সন্নিবেশ করার জন্য সাধারণ সমাধান (কেবলমাত্র একটি ধ্রুবক মান নয়)।
সিএস 95

উত্তর:


363

দস্তাবেজগুলি দেখুন: http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.insert.html

লোক = 0 ব্যবহার করা শুরুতে .োকানো হবে

df.insert(loc, column, value)

df = pd.DataFrame({'B': [1, 2, 3], 'C': [4, 5, 6]})

df
Out: 
   B  C
0  1  4
1  2  5
2  3  6

idx = 0
new_col = [7, 8, 9]  # can be a list, a Series, an array or a scalar   
df.insert(loc=idx, column='A', value=new_col)

df
Out: 
   A  B  C
0  7  1  4
1  8  2  5
2  9  3  6

18
ভবিষ্যতের ব্যবহারকারীদের জন্য, নতুন প্যারামিটারগুলি হ'ল "লক", "কলাম" এবং "মান"সূত্র
পিটার মাগুয়ের

11

আপনি তালিকা হিসাবে কলামগুলি বের করার চেষ্টা করতে পারেন, এটি আপনার যেমন প্রয়োজন তেমন ম্যাসেজ করতে এবং আপনার ডেটাফ্রেমের পুনর্নির্মাণ করতে পারেন:

>>> cols = df.columns.tolist()
>>> cols = [cols[-1]]+cols[:-1] # or whatever change you need
>>> df.reindex(columns=cols)

   n  l  v
0  0  a  1
1  0  b  2
2  0  c  1
3  0  d  2

সম্পাদনা: এটি এক লাইনে করা যেতে পারে; তবে এটিকে কিছুটা কুৎসিত দেখাচ্ছে। সম্ভবত কিছু ক্লিনার প্রস্তাব আসতে পারে ...

>>> df.reindex(columns=['n']+df.columns[:-1].tolist())

   n  l  v
0  0  a  1
1  0  b  2
2  0  c  1
3  0  d  2

9

আপনি যদি সমস্ত সারিগুলির জন্য একটি একক মান চান:

df.insert(0,'name_of_column','')
df['name_of_column'] = value

সম্পাদনা:

আপনি এটিও করতে পারেন:

df.insert(0,'name_of_column',value)

0

এখানে এটির একটি খুব সহজ উত্তর (কেবল একটি লাইন)।

নীচে আপনার ডিএফ-তে 'এন' কলাম যুক্ত করার পরে আপনি এটি করতে পারেন।

import pandas as pd
df = pd.DataFrame({'l':['a','b','c','d'], 'v':[1,2,1,2]})
df['n'] = 0

df
    l   v   n
0   a   1   0
1   b   2   0
2   c   1   0
3   d   2   0

# here you can add the below code and it should work.
df = df[list('nlv')]
df

    n   l   v
0   0   a   1
1   0   b   2
2   0   c   1
3   0   d   2



However, if you have words in your columns names instead of letters. It should include two brackets around your column names. 

import pandas as pd
df = pd.DataFrame({'Upper':['a','b','c','d'], 'Lower':[1,2,1,2]})
df['Net'] = 0
df['Mid'] = 2
df['Zsore'] = 2

df

    Upper   Lower   Net Mid Zsore
0   a       1       0   2   2
1   b       2       0   2   2
2   c       1       0   2   2
3   d       2       0   2   2

# here you can add below line and it should work 
df = df[list(('Mid','Upper', 'Lower', 'Net','Zsore'))]
df

   Mid  Upper   Lower   Net Zsore
0   2   a       1       0   2
1   2   b       2       0   2
2   2   c       1       0   2
3   2   d       2       0   2
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.