จะแสดงชื่อคอลัมน์ทั้งหมดบนแพนด้าดาต้าเฟรมได้อย่างไร


142

ฉันมีดาต้าเฟรมที่ประกอบด้วยคอลัมน์หลายร้อยคอลัมน์และฉันต้องการดูชื่อคอลัมน์ทั้งหมด

ฉันทำอะไรไป:

In[37]:
data_all2.columns

ผลลัพธ์คือ:

Out[37]:
Index(['customer_id', 'incoming', 'outgoing', 'awan', 'bank', 'family', 'food',
       'government', 'internet', 'isipulsa',
       ...
       'overdue_3months_feature78', 'overdue_3months_feature79',
       'overdue_3months_feature80', 'overdue_3months_feature81',
       'overdue_3months_feature82', 'overdue_3months_feature83',
       'overdue_3months_feature84', 'overdue_3months_feature85',
       'overdue_3months_feature86', 'loan_overdue_3months_total_y'],
      dtype='object', length=102)

ฉันจะแสดงคอลัมน์ทั้งหมดแทนรายการที่ถูกตัดทอนได้อย่างไร

คำตอบ:


220

คุณสามารถตั้งค่าตัวเลือกการพิมพ์ได้ทั่วโลก ฉันคิดว่าสิ่งนี้ควรได้ผล:

วิธีที่ 1:

pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)

วิธีที่ 2:

pd.options.display.max_columns = None
pd.options.display.max_rows = None

.head()นี้จะช่วยให้คุณสามารถเห็นชื่อคอลัมน์และแถวเมื่อคุณกำลังทำ ชื่อคอลัมน์จะไม่มีการตัดทอน


หากคุณต้องการดูชื่อคอลัมน์ที่คุณสามารถทำได้:

print(df.columns.tolist())

3
@EEE ไม่ตอบคำถาม ฉันเพิ่งลองใช้มันแสดงคอลัมน์ทั้งหมดแทนที่จะเป็นรายการที่ถูกตัดทอน เขาไม่ได้พูดว่าฟิลด์ที่ถูกตัดทอนเขากล่าวว่ารายการคอลัมน์
rjurney

3
อ่าคุณพูดถูก ฉันผิดไป. ขอบคุณ @rjurney และขอโทษ YOLO ฉันกำลังทำ df.columns แทน df.head ()! ฉันควรลบความคิดเห็นที่ไม่ถูกต้องก่อนหน้านี้หรือไม่?
EEE

ใช่ฉันก็คิดเช่นนั้น.
rjurney

1
จะดีกว่ามากที่จะตั้งค่า จำกัด เช่น 500 มิฉะนั้นจะใช้เวลาตลอดไปในการรันหากคุณพิมพ์ดาต้าเฟรมขนาดใหญ่
Thomas G.

1
ขออภัยจะปิดอย่างไร? ตอนนี้วิธีแก้ปัญหาของฉันคือปิดอนาคอนด้าแล้วเปิดใหม่ มีกฎหมายที่จะออกไปโดยไม่ทำเช่นนั้นหรือไม่?
Chen Lizi

46

ที่จะได้รับทั้งหมดชื่อคอลัมน์ของ DataFrame, ในตัวอย่างนี้คุณเพียงแค่ต้องใช้คำสั่งdf_data df_data.columns.valuesนี่จะแสดงรายการที่มีชื่อคอลัมน์ทั้งหมดของ Dataframe ของคุณ

รหัส:

df_data=pd.read_csv('../input/data.csv')
print(df_data.columns.values)

เอาท์พุต:

['PassengerId' 'Survived' 'Pclass' 'Name' 'Sex' 'Age' 'SibSp' 'Parch' 'Ticket' 'Fare' 'Cabin' 'Embarked']

นี่คือคำตอบที่แท้จริงสำหรับคำถามนี้ขอบคุณ @ pink.slash
Interlooper

ถ้าฉันต้องการดูหมายเลขคอลัมน์ด้วย - เป็นไปได้ไหม df ของฉันมี 200 คอลัมน์และฉันต้องการใช้เศษส่วนของมันและคิดว่าฉันสามารถใช้ตัวเลขแทนการเขียนชื่อคอลัมน์แต่ละคอลัมน์ได้
Mactilda

12

ในคอนโซลแบบโต้ตอบคุณสามารถทำได้ง่ายๆ:

data_all2.columns.tolist()

หรือสิ่งนี้ภายในสคริปต์:

print(data_all2.columns.tolist())

8

นี้จะทำเคล็ดลับ หมายเหตุการใช้display()แทนการพิมพ์

with pd.option_context('display.max_rows', 5, 'display.max_columns', None): 
    display(my_df)

แก้ไข:

การใช้displayถูกต้องเนื่องจากpd.option_contextการตั้งค่าจะนำไปใช้และไม่ให้displayprint


ฉันชอบwithคำหลักที่จะใช้ตัวเลือกกับบล็อกด้านล่างเท่านั้น print()แต่จะทำงานได้ดีกับ ทำไมต้องใช้display()แทนprint()?
Vincent Agami

@VincentAgami จำเป็นต้องใช้การแสดงผลเนื่องจากการตั้งค่า pd.option_context ใช้กับการแสดงผลเท่านั้นและไม่ต้องพิมพ์ ฉันได้อัปเดตคำตอบเพื่อรวมข้อมูลนี้
nico

5

สิ่งที่ได้ผลสำหรับฉันมีดังต่อไปนี้:

pd.options.display.max_seq_items = None

คุณยังสามารถตั้งค่าเป็นจำนวนเต็มมากกว่าจำนวนคอลัมน์ของคุณได้


3

วิธีที่ง่ายที่สุดที่ฉันพบคือ

list(df.columns)

โดยส่วนตัวแล้วฉันไม่ต้องการเปลี่ยน globals ไม่ใช่ว่าบ่อยครั้งที่ฉันต้องการเห็นชื่อคอลัมน์ทั้งหมด


2

ในการรับชื่อคอลัมน์ทั้งหมดคุณสามารถทำซ้ำได้ที่ไฟล์data_all2.columns.

columns = data_all2.columns
for col in columns:
    print col

คุณจะได้รับชื่อคอลัมน์ทั้งหมด หรือคุณสามารถจัดเก็บชื่อคอลัมน์ทั้งหมดไว้ในตัวแปรรายการอื่นจากนั้นพิมพ์รายการ



1

หากคุณต้องการดูคอลัมน์ทั้งหมดคุณสามารถทำบางอย่างในประเภทนี้เป็นการแก้ไขด่วน

cols = data_all2.columns

ตอนนี้ cols จะทำงานเป็นตัวแปรซ้ำที่สามารถสร้างดัชนีได้ ตัวอย่างเช่น

cols[11:20]

1

วิธีแก้ปัญหาที่รวดเร็วและสกปรกคือการแปลงเป็นสตริง

print('\t'.join(data_all2.columns))

จะทำให้ทั้งหมดถูกพิมพ์ออกมาโดยคั่นด้วยแท็บแน่นอนโปรดทราบว่าด้วย 102 ชื่อทั้งหมดค่อนข้างยาวสิ่งนี้จะอ่านยากสักหน่อย



1

ไม่ใช่คำตอบธรรมดา แต่ฉันเดาว่าคุณสามารถเปลี่ยนดาต้าเฟรมเพื่อดูแถวแทนคอลัมน์ได้ ฉันใช้สิ่งนี้เพราะฉันพบว่าการดูแถว 'สัญชาตญาณ' มากกว่าการดูคอลัมน์:

data_all2.T

สิ่งนี้จะช่วยให้คุณสามารถดูแถวทั้งหมดได้ การดำเนินการนี้ไม่ถาวรเพียง แต่ช่วยให้คุณสามารถดู dataframe เวอร์ชันที่เปลี่ยนตำแหน่งได้

หากแถวยังคงถูกตัดให้ใช้print(data_all2.T)เพื่อดูทุกอย่าง


ไม่ใช่คำตอบธรรมดา แต่ฉันเดาว่าคุณสามารถเปลี่ยนดาต้าเฟรมเพื่อดูแถวแทนคอลัมน์ได้ สิ่งที่พวกเขาต้องการคือชื่อคอลัมน์ไม่ใช่เหรอ? หากแถวยังคงถูกตัดให้ใช้การพิมพ์ (data_all2.T) เพื่อดูทุกอย่าง การพิมพ์ผลลัพธ์จะแก้ปัญหาได้อย่างไร คุณยังไม่ได้พิมพ์หรือไม่
AMC

-1

ฉันรู้ว่ามันเป็นการทำซ้ำ แต่ฉันมักจะจบลงด้วยการคัดลอกวางและแก้ไขคำตอบของ YOLO:

pd.set_option('display.max_columns', 500)
pd.set_option('display.max_rows', 500)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.