วิธีการเพิ่มแถวส่วนหัวเพื่อหมีแพนด้า DataFrame


166

ฉันกำลังอ่านไฟล์ CSV pandasเข้า ไฟล์ csv นี้ยังคงอยู่ในสี่คอลัมน์และบางแถว แต่ไม่มีแถวส่วนหัวซึ่งฉันต้องการเพิ่ม ฉันได้ลองทำสิ่งต่อไปนี้:

Cov = pd.read_csv("path/to/file.txt", sep='\t')
Frame=pd.DataFrame([Cov], columns = ["Sequence", "Start", "End", "Coverage"])
Frame.to_csv("path/to/file.txt", sep='\t')

แต่เมื่อฉันใช้รหัสฉันได้รับข้อผิดพลาดต่อไปนี้:

ValueError: Shape of passed values is (1, 1), indices imply (4, 1)

ข้อผิดพลาดหมายถึงอะไร และอะไรจะเป็นวิธีที่สะอาดในหลามเพื่อเพิ่มแถวส่วนหัวในไฟล์ csv ของฉัน / pandas df?


นี่คือการตีความที่แตกต่างกันสำหรับคำถามของคุณ: เพิ่มส่วนหัวอื่นไปยัง Dataframe ที่มีอยู่เพื่อสร้าง MultiIndex
cs95

คำตอบ:


257

คุณสามารถใช้namesโดยตรงในread_csv

ชื่อ: เหมือนอาร์เรย์เริ่มต้นไม่มีรายการของชื่อคอลัมน์ที่จะใช้ หากไฟล์ไม่มีแถวส่วนหัวคุณควรผ่านส่วนหัว = None อย่างชัดเจน

Cov = pd.read_csv("path/to/file.txt", 
                  sep='\t', 
                  names=["Sequence", "Start", "End", "Coverage"])

9
คุณจะหัวเราะ จริง ๆ แล้วฉันลองทำสิ่งนี้ แต่ไม่รู้ว่าคุณต้องใส่วงเล็บเหลี่ยมรอบชื่อ ซึ่งมีเหตุผลในการหวนกลับ ขอบคุณ!
sequence_hard

ไม่ต้องกังวลเราทุกคนทำผิดพลาดไปหมดแล้ว ฉันก็มีความผิดเช่นกัน
Leb

@ ต่ำฉันมีปัญหาเดียวกันทั้งหมดและฉันพยายามแก้ปัญหาของคุณ ฉันได้รับส่วนหัวสำหรับตาราง แต่แถวแรกก็ถูกแทนที่ด้วยชื่อส่วนหัวเดียวกัน ตอนนี้ฉันต้องทำอะไรบ้าง
007mrviper

มันเพิ่มคอลเลกชันเพิ่มเติมลงในข้อมูลของฉันทั้งหมดมีNaNคุณสมบัติ เป็นเพราะตัวคั่นของฉันเป็นพื้นที่ว่าง
SalahAdDin

128

อีกวิธีหนึ่งคุณสามารถอ่าน csv ของคุณheader=Noneแล้วเพิ่มด้วยdf.columns:

Cov = pd.read_csv("path/to/file.txt", sep='\t', header=None)
Cov.columns = ["Sequence", "Start", "End", "Coverage"]

15
col_Names=["Sequence", "Start", "End", "Coverage"]
my_CSV_File= pd.read_csv("yourCSVFile.csv",names=col_Names)

เมื่อทำสิ่งนี้แล้วให้ตรวจสอบด้วย แต่ยังคง...

my_CSV_File.head()

หวังว่ามันจะช่วย ... ไชโย


กรุณาจัดรูปแบบรหัสของคุณด้วย{}ปุ่ม เยื้องเรื่อง
นาย T

7

เพื่อแก้ไขรหัสของคุณคุณก็สามารถเปลี่ยน[Cov]ไปCov.valuesพารามิเตอร์แรกของpd.DataFrameจะกลายเป็นหลายมิติnumpyอาร์เรย์:

Cov = pd.read_csv("path/to/file.txt", sep='\t')
Frame=pd.DataFrame(Cov.values, columns = ["Sequence", "Start", "End", "Coverage"])
Frame.to_csv("path/to/file.txt", sep='\t')

แต่การแก้ปัญหาที่ฉลาดที่สุดยังคงเป็นการใช้งานpd.read_excelด้วยและheader=Nonenames=columns_list


เมื่อเราให้ column_list เราสามารถเพิ่มค่าเริ่มต้นสำหรับคอลัมน์ที่เลือกได้หรือไม่
Chintan Gotecha
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.