जवाबों:
अगर मैं सही तरीके से समझूं तो असाइनमेंट भरना चाहिए:
>>> 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
आप हमेशा मौजूदा डेटाफ़्रेम के लिए एक नया (खाली) डेटाफ़्रेम भी ले सकते हैं, लेकिन यह आपके लिए pythen के रूप में महसूस नहीं करता है :)
version >= 0.20.0DataFrame को हटाने के लिए उदाहरण और पंक्तियों के रूप में नए कॉलम जोड़ता है। version < 0.20.0पंडों संस्करण पर ठीक काम करने के लिए उदाहरण0.24.1
, axis=1थी version = 0.25। मैंने अपडेट किए गए संस्करण को शामिल करने के लिए आपके उत्तर को संशोधित करने का प्रयास किया, लेकिन मुझे @kenlukas और @il_raffa द्वारा अस्वीकार कर दिया गया। मुझे उम्मीद है कि हर कोई यह समझने के लिए संघर्ष कर रहा है कि आपकी प्रतिक्रिया उनके लिए काम क्यों नहीं कर रही है - जैसे कि मैं था - कम से कम इस टिप्पणी के पार आता है।
एक और भी सरल समाधान है:
df = df.reindex(columns = header_list)
जहाँ "शीर्षलेख_सूची" उन शीर्ष लेखों की एक सूची है जिन्हें आप दिखाना चाहते हैं।
सूची में शामिल कोई भी शीर्ष लेख जो पहले से ही डेटाफ़्रेम में नहीं पाया जाता है, नीचे रिक्त कक्षों के साथ जोड़ा जाएगा।
तो अगर
header_list = ['a','b','c', 'd']
फिर c और d को रिक्त कोशिकाओं वाले कॉलम के रूप में जोड़ा जाएगा
के साथ शुरू v0.16.0, एक DF.assign()करने के लिए नए कॉलम ( एकल / एकाधिक ) आवंटित करने के लिए इस्तेमाल किया जा सकता है DF। इन स्तंभों के अंत में वर्णानुक्रम में डाला जाता है DF।
यह उन मामलों में सरल असाइनमेंट की तुलना में लाभप्रद है, जिनमें आप लौटे डेटाफ़्रेम पर सीधे जंजीर संचालन की एक श्रृंखला करना चाहते हैं।
DF@DSM द्वारा प्रदर्शित समान नमूने पर विचार करें :
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=pd.DataFrame()
a=['col1','col2','col3','col4']
for i in a:
df[i]=np.nan
नीचे दिए गए कोड में यह सवाल है कि "मैं अपने मौजूदा डेटाफ़्रेम में रिक्त कॉलमों की संख्या को कैसे जोड़ूँ"। एक ही स्थान पर समान समस्याओं के समाधान रखने के हित में, मैं इसे यहां जोड़ रहा हूं।
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", "")
उपरोक्त विवरण पहले कॉलम के बाद एक खाली कॉलम सम्मिलित करेगा।
N/A?