Đăng nhập vào DataFrame trống trong Pandas?


212

Có thể nối vào khung dữ liệu trống không chứa bất kỳ chỉ mục hoặc cột nào không?

Tôi đã cố gắng để làm điều này, nhưng cuối cùng vẫn nhận được một khung dữ liệu trống.

ví dụ

df = pd.DataFrame()
data = ['some kind of data here' --> I have checked the type already, and it is a dataframe]
df.append(data)

Kết quả trông như thế này:

Empty DataFrame
Columns: []
Index: []

Đã trả lời một câu hỏi tương tự ở đây: stackoverflow.com/questions/13784192/ . về cơ bản là như thế nàynewDF = pd.DataFrame() #creates a new dataframe that's empty newDF = newDF.append(oldDF, ignore_index = True) # ignoring index is optional
geekidharsh 24/2/2017

Nối những gì? Một giá trị duy nhất? một danh sách Python? một loạt gấu trúc? Một khung dữ liệu khác? Nhận xét theo dõi ví dụ của bạn cho thấy bạn có nghĩa là một khung dữ liệu khác - vì vậy hãy cung cấp một khung dữ liệu trong mã ví dụ của bạn :)
smci

Và khi bạn nói "Kết quả trông như thế này", tôi hy vọng bạn không cố gắng trực tiếp làm điều đó print(df.append(data)), bởi vì append()luôn trả về Không có trong Python
smci

Câu trả lời:


388

Cần làm việc:

>>> df = pd.DataFrame()
>>> data = pd.DataFrame({"A": range(3)})
>>> df.append(data)
   A
0  0
1  1
2  2

Nhưng điều appendđó không xảy ra tại chỗ , vì vậy bạn sẽ phải lưu trữ đầu ra nếu bạn muốn:

>>> df
Empty DataFrame
Columns: []
Index: []
>>> df = df.append(data)
>>> df
   A
0  0
1  1
2  2

8
Cảm ơn bạn! Điều đó đã làm việc! Tôi đã không nhận ra rằng tôi phải lưu trữ đầu ra ... Có lẽ tôi nên đọc tài liệu tốt hơn, nhưng tôi đánh giá cao nó, @DSM!
ericmjl

9
Tôi luôn quên bạn cần phải chỉ định nó!
Andy B

66
thực ra việc nối thêm không xảy ra tại chỗ là thông tin quan trọng nhất ở đây;)
refuzee

6
Không có lý do tại sao các ví dụ Pandas không cho thấy điều đó. Cảm ơn bạn đã giúp đỡ!
Drew Szurko

2
lưu ý rằng ít nhất là vào tháng 6 năm 2018 nếu bạn muốn các hàng mới tự lập chỉ mục, bạn nên viết df.append (data, ign_index = True). Cảm ơn câu trả lời tuyệt vời!
Adam B

98

Và nếu bạn muốn thêm một hàng, bạn có thể sử dụng từ điển:

df = pd.DataFrame()
df = df.append({'name': 'Zed', 'age': 9, 'height': 2}, ignore_index=True)

cung cấp cho bạn:

   age  height name
0    9       2  Zed

Hiệu suất thấp, đặc biệt khi xử lý dữ liệu lớn
raullalves

2
Bạn có thể đặt nó liên quan đến các lựa chọn thay thế được đề xuất khác, @raullalves không?
Bouncner

23

Bạn có thể nối dữ liệu theo cách này:

InfoDF = pd.DataFrame()
tempDF = pd.DataFrame(rows,columns=['id','min_date'])

InfoDF = pd.concat([InfoDF,tempDF])

Cảm ơn bạn, tôi đã thử concat. Nhưng tại sao cả hai lại nối và nối nếu họ có thể làm cùng một công việc
Nitesh kumar

Chủ đề này có thể đưa ra một lời giải thích tốt: stackoverflow.com/questions/15819050/ cấp
Sâu vào
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.