Vì vậy, tôi đã khởi tạo một DataFrame gấu trúc trống và tôi muốn nối lại các danh sách (hoặc Chuỗi) dưới dạng các hàng trong DataFrame này. Cách nào là tốt nhất để thực hiện việc này?
Vì vậy, tôi đã khởi tạo một DataFrame gấu trúc trống và tôi muốn nối lại các danh sách (hoặc Chuỗi) dưới dạng các hàng trong DataFrame này. Cách nào là tốt nhất để thực hiện việc này?
Câu trả lời:
Đôi khi, thực hiện tất cả các phụ kiện bên ngoài gấu trúc dễ dàng hơn, sau đó, chỉ cần tạo DataFrame trong một lần chụp.
>>> 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
list
. Bạn vừa ghi đè hàm list
tạo.
df = pd.DataFrame(columns=list("ABC"))
df.loc[len(df)] = [1,2,3]
df
.
Đây là một giải pháp đơn giản và ngu ngốc:
>>> import pandas as pd
>>> df = pd.DataFrame()
>>> df = df.append({'foo':1, 'bar':2}, ignore_index=True)
Bạn có thể làm một cái gì đó như thế này?
>>> 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
Có ai có một giải pháp thanh lịch hơn?
Theo dõi câu trả lời của Mike Chirico ... nếu bạn muốn thêm một danh sách sau khi khung dữ liệu đã được điền ...
>>> 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
Nếu bạn muốn thêm Chuỗi và sử dụng chỉ mục của Chuỗi làm cột của DataFrame, bạn chỉ cần nối Chuỗi giữa các dấu ngoặc:
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]
Cho dù ignore_index=True
bạn không nhận được chỉ mục thích hợp.
Đây là một hàm, với một khung dữ liệu đã được tạo sẵn, sẽ thêm một danh sách dưới dạng một hàng mới. Điều này có thể sẽ có các trình bắt lỗi được đưa vào, nhưng nếu bạn biết chính xác những gì bạn đang thêm thì đó không phải là vấn đề.
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
Như đã đề cập ở đây - https://kite.com/python/answers/how-to-append-a-list-as-a-row-to-a-pandas-dataframe-in-python , trước tiên bạn sẽ cần chuyển đổi danh sách thành một chuỗi sau đó nối chuỗi vào khung dữ liệu.
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)