ประหลาดใจฉันยังไม่เห็นโพสต์นี้ดังนั้นฉันจะทิ้งไว้ที่นี่
ขยาย Iterable Unpacking (python3.5 +): [*df]
และเพื่อน ๆ
การนำออกการแกะ (PEP 448)ได้รับการแนะนำด้วย Python 3.5 ดังนั้นการดำเนินการต่อไปนี้เป็นไปได้ทั้งหมด
df = pd.DataFrame('x', columns=['A', 'B', 'C'], index=range(5))
df
A B C
0 x x x
1 x x x
2 x x x
3 x x x
4 x x x
ถ้าคุณต้องการlist
....
[*df]
# ['A', 'B', 'C']
หรือหากคุณต้องการset
,
{*df}
# {'A', 'B', 'C'}
หรือหากคุณต้องการtuple
,
*df, # Please note the trailing comma
# ('A', 'B', 'C')
หรือถ้าคุณต้องการเก็บผลลัพธ์ไว้ที่ใดที่หนึ่ง
*cols, = df # A wild comma appears, again
cols
# ['A', 'B', 'C']
... หากคุณเป็นคนที่แปลงกาแฟเป็นคนพิมพ์เสียงก็จะเป็นการบริโภคกาแฟของคุณอย่างมีประสิทธิภาพมากขึ้น;)
ป.ล. : ถ้าประสิทธิภาพเป็นสิ่งสำคัญคุณจะต้องทิ้งแนวทางแก้ไขปัญหาข้างต้นลงไป
df.columns.to_numpy().tolist()
# ['A', 'B', 'C']
นี้จะคล้ายกับคำตอบของเอ็ดชุมของแต่ปรับปรุงสำหรับ v0.24 ที่เป็นที่ต้องการการใช้งานของ.to_numpy()
.values
ดู
คำตอบนี้ (โดยฉัน) สำหรับข้อมูลเพิ่มเติม
การตรวจสอบด้วยสายตา
เนื่องจากฉันได้เห็นสิ่งนี้ถูกกล่าวถึงในคำตอบอื่นคุณสามารถใช้การเปิดกล่องที่ไม่ต้องทำซ้ำ (ไม่จำเป็นต้องใช้ลูปที่ชัดเจน)
print(*df)
A B C
print(*df, sep='\n')
A
B
C
คำติชมของวิธีการอื่น ๆ
อย่าใช้การfor
วนซ้ำอย่างชัดเจนสำหรับการดำเนินการที่สามารถทำได้ในบรรทัดเดียว (ความเข้าใจในรายการไม่เป็นไร)
ถัดไปการใช้sorted(df)
จะไม่รักษาลำดับดั้งเดิมของคอลัมน์ไว้ เพื่อที่คุณควรใช้list(df)
แทน
ถัดไปlist(df.columns)
และlist(df.columns.values)
เป็นข้อเสนอแนะที่ไม่ดี (ณ เวอร์ชันปัจจุบัน v0.24) ทั้งอาร์เรย์ (ส่งIndex
คืนจากdf.columns
) และ NumPy (คืนโดยdf.columns.values
) กำหนด.tolist()
วิธีการที่เร็วขึ้นและเป็นสำนวนมากขึ้น
สุดท้ายการรับฟังคือlist(df)
ควรใช้เป็นทางเลือกที่กระชับกับวิธีการดังกล่าวข้างต้นสำหรับ python <= 3.4 โดยที่ไม่สามารถทำการขยายเพิ่มเติมได้
columns
มีคุณสมบัติเป็น?