একটি সারি হিসাবে একটি পান্ডাস ডাটাফ্রেমে একটি তালিকা বা সিরিজ যুক্ত করছেন?


114

সুতরাং আমি একটি খালি পান্ডাস ডেটা ফ্রেম আরম্ভ করেছি এবং আমি এই ডাটাফ্রেমের সারি হিসাবে পুনরাবৃত্তভাবে তালিকা (বা সিরিজ) সংযোজন করতে চাই। এটি করার সর্বোত্তম উপায় কী?


4
আরও ভাল উত্তর নীচে পাওয়া যাবে: stackoverflow.com/questions/10715965/…
ইউভাল আতজমন

উত্তর:


138

কখনও কখনও পান্ডার বাইরে সমস্ত সংযোজন করা সহজ, তারপরে, কেবল একটি শটে ডেটা ফ্রেম তৈরি করুন।

>>> 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

4
প্রশ্নটি ইঙ্গিত করে বলে মনে হচ্ছে যে সমস্ত সারিটি সামনে জানা নেই।
ডিআইএসসি-ও

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

9
আপনি যদি শেষের দিকে যুক্ত করতে চান তবে এটি সবচেয়ে সহজ df
সিড

4
এটি আমি যা চেয়েছিলাম ঠিক তাই, কার্যকর তবে কার্যকর!
MSalty

4
কেন এটি নির্বাচিত উত্তর নয়?
লুকাস আজেভেদো

4
সাধারণত ঠিক আছে কিন্তু শুধুমাত্র কাজ করে যদি আপনি একটি monotonically বৃদ্ধি সূচক যে 0. শুরু আছে
dreab

61

এখানে একটি সহজ এবং বোবা সমাধান:

>>> import pandas as pd
>>> df = pd.DataFrame()
>>> df = df.append({'foo':1, 'bar':2}, ignore_index=True)

27
নোট করুন যে এটি একটি ডিক সংযোজন করছে, একটি তালিকা নয়
anthnyprschka

37

তুমি কি এ জাতীয় কিছু করতে পার?

>>> 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

কারও কি আরও মার্জিত সমাধান আছে?


4
এখানে একটি সহজ এবং বোবা সমাধান: d `p পিডি ডিএফ = পিডি হিসাবে ডেটাফ্রেম () ডিএফ = ডিএফ.অ্যাপেন্ড ({'foo': 1, 'বার': 2 ignore, অগ্রাহ্য_আন্দেক্স = সত্য) # পান্ডস আমদানি করুন জায়গায় ঘটে না। `` `
জয়দেব দেশপাণ্ডে

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

5

এখানে একটি ফাংশন যা ইতিমধ্যে তৈরি করা ডেটাফ্রেম দেওয়া হয়েছে, এটি একটি নতুন সারি হিসাবে একটি তালিকা যুক্ত করবে। এটিতে সম্ভবত ত্রুটি ক্যাচারারদের ফেলে দেওয়া উচিত তবে আপনি কী যুক্ত করছেন তা যদি আপনি ঠিক জানেন তবে এটি কোনও সমস্যা হওয়া উচিত নয়।

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

4

আপনি যদি কোনও সিরিজ যুক্ত করতে চান এবং ডেটাফ্রেমের কলাম হিসাবে সিরিজ সূচকটি ব্যবহার করতে চান তবে আপনাকে কেবল বন্ধনীগুলির মধ্যে সিরিজ যুক্ত করতে হবে:

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]

হোয়াইট আউট ignore_index=Trueআপনি সঠিক ইনডেক্স পাবেন না।


4

তালিকার একটি অ্যাপ্লিকেশন ফাংশনের মধ্যে ডেটা ফ্রেমে রূপান্তর করা লুপে প্রয়োগ করার পরেও কাজ করে

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

2

এখানে উল্লিখিত হিসাবে - 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

সম্পাদনা করুন:

ভুলে যাবেন না যে নতুন তালিকার দৈর্ঘ্য সংশ্লিষ্ট ডেটাফ্রেমের মতো হওয়া উচিত।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.