एक सूची या श्रृंखला को एक पांडा के रूप में जोड़ना DataFrame एक पंक्ति के रूप में?


107

इसलिए मैंने एक खाली पांडा डेटाफ़्रेम को इनिशियलाइज़ किया है और मैं इस डेटाफ़्रेम में पंक्तियों के रूप में सूचियों (या श्रृंखला) को जोड़ना चाहूँगा। ऐसा करने का सबसे अच्छा तरीका क्या है?


इसके अंतर्गत बेहतर उत्तर पाए जा सकते हैं: stackoverflow.com/questions/10715965/…
युवल एटजमन

जवाबों:


132

कभी-कभी पंडों के बाहर सभी प्रकार के काम करना आसान होता है, फिर, केवल एक शॉट में डेटाफ़्रेम बनाएं।

>>> import pandas as pd
>>> simple_list=[['a','b']]
>>> simple_list.append(['e','f'])
>>> df=pd.DataFrame(simple_list,columns=['col1','col2'])
   col1 col2
0    a    b
1    e    f

22
किसी वैरिएबल को नाम देने के लिए बुरा अभ्यास list। आपने अभी-अभी listकंस्ट्रक्टर को अधिलेखित किया है ।
जेसन स्ट्रिंपेल

1
यह प्रश्न स्पष्ट रूप से प्रतीत होता है कि सभी पंक्तियों को सामने नहीं रखा गया है।
DISC-O

103
df = pd.DataFrame(columns=list("ABC"))
df.loc[len(df)] = [1,2,3]

8
यह सबसे आसान है अगर आप के अंत में जोड़ना चाहते हैं df
सिड

2
यह वही है जो मैं चाहता था, इतना सरल अभी तक प्रभावी नहीं है!
MSALty

3
यह चयनित उत्तर क्यों नहीं है?
लुकास अज़ीवेडो

यह आम तौर पर ठीक है, लेकिन केवल तभी काम करता है जब आपके पास एक मोनोटोनिक रूप से बढ़ता हुआ इंडेक्स है जो 0.
dreab


36

क्या आप ऐसा कुछ कर सकते थे?

>>> import pandas as pd
>>> df = pd.DataFrame(columns=['col1', 'col2'])
>>> df = df.append(pd.Series(['a', 'b'], index=['col1','col2']), ignore_index=True)
>>> df = df.append(pd.Series(['d', 'e'], index=['col1','col2']), ignore_index=True) 
>>> df
  col1 col2
0    a    b
1    d    e

क्या किसी के पास अधिक सुरुचिपूर्ण समाधान है?


1
यहाँ एक सरल और गूंगा समाधान है: `` आयात पंडों के रूप में पीडी df = pd.DataFrame () df = df.append ({'foo': 1, 'bar': 2}, ignindindex = True) # ध्यान दें कि यह आकर्षक है जगह में नहीं होता है। `` `
जयदेव देशपांडे

27

माइक चिरिको के जवाब के बाद ... यदि आप डेटाफ़्रेम के बाद पहले से ही आबादी वाले एक सूची को जोड़ना चाहते हैं ...

>>> list = [['f','g']]
>>> df = df.append(pd.DataFrame(list, columns=['col1','col2']),ignore_index=True)
>>> df
  col1 col2
0    a    b
1    d    e
2    f    g

क्या यह एक प्रति बनाता है? क्या इन-प्लेस को जोड़ना संभव है?
lucid_dreamer

4

यदि आप एक श्रृंखला जोड़ना चाहते हैं और DataFrame के कॉलम के रूप में श्रृंखला के सूचकांक का उपयोग करना चाहते हैं, तो आपको केवल ब्रैकेट के बीच श्रृंखला को जोड़ना होगा:

In [1]: import pandas as pd

In [2]: df = pd.DataFrame()

In [3]: row=pd.Series([1,2,3],["A","B","C"])

In [4]: row
Out[4]: 
A    1
B    2
C    3
dtype: int64

In [5]: df.append([row],ignore_index=True)
Out[5]: 
   A  B  C
0  1  2  3

[1 rows x 3 columns]

Whitout ignore_index=Trueआप उचित सूचकांक नहीं मिलता है।


4

यहां एक फ़ंक्शन है, जो पहले से ही बनाई गई डेटाफ़्रेम दी गई है, एक सूची को एक नई पंक्ति के रूप में जोड़ देगी। इसमें शायद त्रुटि पकड़ने वाले को फेंक दिया जाना चाहिए, लेकिन यदि आप जानते हैं कि आप वास्तव में क्या जोड़ रहे हैं तो यह एक मुद्दा नहीं होना चाहिए।

import pandas as pd
import numpy as np

def addRow(df,ls):
    """
    Given a dataframe and a list, append the list as a new row to the dataframe.

    :param df: <DataFrame> The original dataframe
    :param ls: <list> The new row to be added
    :return: <DataFrame> The dataframe with the newly appended row
    """

    numEl = len(ls)

    newRow = pd.DataFrame(np.array(ls).reshape(1,numEl), columns = list(df.columns))

    df = df.append(newRow, ignore_index=True)

    return df

3

एपेंड फ़ंक्शन फ़ंक्शन के भीतर एक डेटा फ्रेम में सूची को परिवर्तित करना, जब भी एक लूप में लागू किया जाता है

import pandas as pd
mylist = [1,2,3]
df = pd.DataFrame()
df = df.append(pd.DataFrame(data[mylist]))

2

बस नियंत्रण रेखा का उपयोग करें:

>>> df
     A  B  C
one  1  2  3
>>> df.loc["two"] = [4,5,6]
>>> df
     A  B  C
one  1  2  3
two  4  5  6

1

जैसा कि यहां बताया गया है - https://kite.com/python/answers/how-to-append-a-list-as-a-row-to-a-pandas-dataframe-in-python , आपको सबसे पहले आवश्यकता होगी सूची को एक श्रृंखला में परिवर्तित करें और फिर श्रृंखला को डेटाफ्रेम में जोड़ें।

df = pd.DataFrame([[1, 2], [3, 4]], columns = ["a", "b"])
to_append = [5, 6]
a_series = pd.Series(to_append, index = df.columns)
df = df.append(a_series, ignore_index=True)

0

सबसे सरल तरीका:

my_list = [1,2,3,4,5]
df['new_column'] = pd.Series(my_list).values

संपादित करें:

यह मत भूलो कि नई सूची की लंबाई संबंधित डेटाफ्रेम के समान होनी चाहिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.