ต่อท้าย DataFrame เปล่าใน Pandas?


212

เป็นไปได้หรือไม่ที่จะผนวกกับกรอบข้อมูลเปล่าที่ไม่มีดัชนีหรือคอลัมน์ใด ๆ ?

ฉันพยายามทำเช่นนี้ แต่ได้รับ dataframe ที่ว่างเปล่าในตอนท้าย

เช่น

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

ผลลัพธ์จะเป็นดังนี้:

Empty DataFrame
Columns: []
Index: []

ตอบคำถามที่คล้ายกันที่นี่: stackoverflow.com/questions/13784192/... โดยทั่วไปมีลักษณะเช่นนี้newDF = pd.DataFrame() #creates a new dataframe that's empty newDF = newDF.append(oldDF, ignore_index = True) # ignoring index is optional
geekidharsh

ต่อท้ายอะไร ค่าเดียวหรือไม่ รายการ Python ซีรี่ส์แพนด้า อีก Dataframe ความคิดเห็นต่อท้ายตัวอย่างของคุณแสดงให้เห็นว่าคุณหมายถึง dataframe อื่น - ดังนั้นให้ dataframe ในโค้ดตัวอย่างของคุณเรียบร้อยแล้ว :)
24419

และเมื่อคุณพูดว่า "ผลลัพธ์มีลักษณะเช่นนี้" ฉันหวังว่าคุณจะไม่พยายามทำโดยตรงprint(df.append(data))เพราะappend()จะคืนค่า None ใน Python เสมอ
smci

คำตอบ:


388

ที่ควรจะทำงาน:

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

แต่สิ่งที่appendไม่ได้เกิดขึ้นในสถานที่ดังนั้นคุณจะต้องเก็บผลลัพธ์ถ้าคุณต้องการ:

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

8
ขอบคุณ! นั่นได้ผล! ฉันไม่ได้ตระหนักว่าฉันต้องเก็บเอาท์พุท ... ฉันน่าจะอ่านเอกสารได้ดีกว่านี้ แต่ฉันซาบซึ้งมาก @DSM!
ericmjl

9
ฉันมักจะลืมว่าคุณต้องกำหนดมัน!
Andy B

66
จริงๆแล้วการผนวกไม่ได้เกิดขึ้นเป็นข้อมูลที่สำคัญที่สุดที่นี่;)
refuzee

6
ไม่มีเงื่อนงำว่าทำไมตัวอย่างของPandasไม่แสดงสิ่งนั้น ขอบคุณสำหรับความช่วยเหลือของคุณ!
Drew Szurko

2
โปรดทราบว่าอย่างน้อยในเดือนมิถุนายน 2018 หากคุณต้องการให้แถวใหม่สร้างดัชนีอัตโนมัติคุณควรเขียน df.append (data, ign_index = True) ขอบคุณสำหรับคำตอบที่ยอดเยี่ยม!
Adam B

98

และถ้าคุณต้องการเพิ่มแถวคุณสามารถใช้พจนานุกรม:

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

ซึ่งให้คุณ:

   age  height name
0    9       2  Zed

ประสิทธิภาพต่ำโดยเฉพาะอย่างยิ่งเมื่อต้องรับมือกับข้อมูลขนาดใหญ่
raullalves

2
คุณสามารถระบุได้ว่าเกี่ยวข้องกับทางเลือกอื่นที่เสนอ @raullalves หรือไม่?
Bouncner

23

คุณสามารถต่อข้อมูลด้วยวิธีนี้:

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

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

ขอบคุณฉันลอง concat แต่ทำไมทั้งสองผนวกและตกลงถ้าพวกเขาสามารถทำงานเดียวกัน
Nitesh kumar

กระทู้นี้อาจให้คำอธิบายที่ดี: stackoverflow.com/questions/15819050/…
Deepish
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.