पंडों के डेटाफ्रेम में सूचियों की सूची को बदलना आसान है:
import pandas as pd
df = pd.DataFrame([[1,2,3],[3,4,5]])
लेकिन मैं डीएफ को सूचियों की सूची में कैसे बदलूं?
lol = df.what_to_do_now?
print lol
# [[1,2,3],[3,4,5]]
पंडों के डेटाफ्रेम में सूचियों की सूची को बदलना आसान है:
import pandas as pd
df = pd.DataFrame([[1,2,3],[3,4,5]])
लेकिन मैं डीएफ को सूचियों की सूची में कैसे बदलूं?
lol = df.what_to_do_now?
print lol
# [[1,2,3],[3,4,5]]
जवाबों:
आप अंतर्निहित सरणी तक पहुँच सकते हैं और इसकी tolistविधि को कॉल कर सकते हैं :
>>> df = pd.DataFrame([[1,2,3],[3,4,5]])
>>> lol = df.values.tolist()
>>> lol
[[1L, 2L, 3L], [3L, 4L, 5L]]
df.to_numpy().tolist() ।
यदि डेटा में कॉलम और इंडेक्स लेबल हैं जिन्हें आप संरक्षित करना चाहते हैं, तो कुछ विकल्प हैं।
उदाहरण डेटा:
>>> df = pd.DataFrame([[1,2,3],[3,4,5]], \
columns=('first', 'second', 'third'), \
index=('alpha', 'beta'))
>>> df
first second third
alpha 1 2 3
beta 3 4 5
tolist()विधि अन्य उत्तर में वर्णित उपयोगी है लेकिन पैदावार केवल कोर डेटा - अपनी आवश्यकताओं पर निर्भर करता है के लिए पर्याप्त नहीं हो सकता है,।
>>> df.values.tolist()
[[1, 2, 3], [3, 4, 5]]
एक तरीका यह है कि DataFramejson का उपयोग करके df.to_json()इसे फिर से पार्स करें। यह बोझिल है लेकिन इसके कुछ फायदे हैं, क्योंकि to_json()विधि के कुछ उपयोगी विकल्प हैं।
>>> df.to_json()
{
"first":{"alpha":1,"beta":3},
"second":{"alpha":2,"beta":4},"third":{"alpha":3,"beta":5}
}
>>> df.to_json(orient='split')
{
"columns":["first","second","third"],
"index":["alpha","beta"],
"data":[[1,2,3],[3,4,5]]
}
बोझिल लेकिन उपयोगी हो सकता है।
अच्छी खबर यह है कि स्तंभों और पंक्तियों की सूची बनाना बहुत सरल है:
>>> columns = [df.index.name] + [i for i in df.columns]
>>> rows = [[i for i in row] for row in df.itertuples()]
यह प्रदान करता है:
>>> print(f"columns: {columns}\nrows: {rows}")
columns: [None, 'first', 'second', 'third']
rows: [['alpha', 1, 2, 3], ['beta', 3, 4, 5]]
यदि Noneसूचकांक का नाम परेशान है, तो इसका नाम बदलें:
df = df.rename_axis('stage')
फिर:
>>> columns = [df.index.name] + [i for i in df.columns]
>>> print(f"columns: {columns}\nrows: {rows}")
columns: ['stage', 'first', 'second', 'third']
rows: [['alpha', 1, 2, 3], ['beta', 3, 4, 5]]
DataFrame.itertuples()या DataFrame.to_records()इस सब के लिए आसान नहीं होगा ?
मुझे नहीं पता कि यह आपकी आवश्यकताओं के अनुरूप होगा, लेकिन आप यह भी कर सकते हैं:
>>> lol = df.values
>>> lol
array([[1, 2, 3],
[3, 4, 5]])
यह ndarray मॉड्यूल से केवल एक खसरा सरणी है, जो आपको सभी सामान्य सुन्न सरणी चीजें करने देता है।
मैं सूचकांक को संरक्षित करना चाहता था, इसलिए मैंने इस समाधान के मूल उत्तर को अनुकूलित किया:
list_df = df.reset_index().values.tolist()
अब आप इसे कहीं और पेस्ट कर सकते हैं (जैसे स्टैक ओवरफ्लो प्रश्न में पेस्ट करने के लिए) और बाद में इसे फिर से बनाएँ:
pd.Dataframe(list_df, columns=['name1', ...])
pd.set_index(['name1'], inplace=True)
हो सकता है कि कुछ बदल गया हो, लेकिन इसने ndarrays की एक सूची वापस दे दी, जो मुझे चाहिए था।
list(df.values)
नोट: मैंने स्टैक ओवरफ्लो पर कई मामलों को देखा है जहां एक पांडस श्रृंखला या डेटाफ्रेम को एक न्यूम सरणी या सादे पायथन सूची में परिवर्तित करना पूरी तरह से आवश्यक है। यदि आप लाइब्रेरी में नए हैं, तो डबल-चेकिंग पर विचार करें कि क्या आपके लिए आवश्यक कार्यक्षमता पहले से ही उन पंडों की वस्तुओं द्वारा पेश की गई है।
@Jpp द्वारा टिप्पणी उद्धृत करने के लिए :
व्यवहार में , अक्सर NumPy सरणी को सूचियों की सूची में परिवर्तित करने की आवश्यकता नहीं होती है।
यदि कोई पांडस डेटाफ़्रेम / सीरीज काम नहीं करेगा, तो आप बिल्ट-इन DataFrame.to_numpyऔर Series.to_numpyविधियों का उपयोग कर सकते हैं ।
for elem in some_series.values.tolist():क्योंकि वे नहीं जानते कि आप एक श्रृंखला के तत्वों पर पुनरावृत्ति कर सकते हैं। मुझे यकीन नहीं है कि इस उत्तर के बारे में इतना भयानक क्या है।
हम DataFrame.iterrows () फ़ंक्शन का उपयोग कर दिए गए डेटाफ्रेम की पंक्तियों में से प्रत्येक पर पुनरावृति कर सकते हैं और प्रत्येक पंक्ति के डेटा से एक सूची का निर्माण कर सकते हैं:
# Empty list
row_list =[]
# Iterate over each row
for index, rows in df.iterrows():
# Create list for the current row
my_list =[rows.Date, rows.Event, rows.Cost]
# append the list to the final list
row_list.append(my_list)
# Print
print(row_list)
हम दिए गए डेटा फ़्रेम की प्रत्येक पंक्ति को एक सूची में सफलतापूर्वक निकाल सकते हैं
Lआउटपुट में जोड़ रहे हैं ?