การลบรายการที่ซ้ำกันสำหรับแถวที่มีรายการที่ซ้ำกันในข้อมูลไดนามิกคอลัมน์เดียว

ฉันกำลังพยายามลบรายการที่ซ้ำกันสำหรับคอลัมน์ D สำหรับข้อมูลไดนามิกที่ไม่มีส่วนหัวหรือคุณลักษณะการระบุ ฉันกำลังพยายามลบแถวทั้งหมดที่มีการซ้ำกันสำหรับคอลัมน์ D ฉันกำลังแปลง Excel เป็นดาต้าเฟรม ลบรายการที่ซ้ำกันออกแล้วใส่กลับเข้าไปใน Excel อย่างไรก็ตาม ฉันยังคงได้รับข้อผิดพลาดหลายประเภทหรือไม่มีการลบรายการที่ซ้ำกันออก ฉันมาจากพื้นหลัง VBA แต่เรากำลังย้ายไปยัง Python

พยายาม:

df.drop_duplicates(["C"])

df = pd.DataFrame({"C"})
df.groupby(["C"]).filter(lambda df:df.shape[0] == 1)

As well an assortment of other variations.  I was able to do this in VBA with one line.  Any ideas why this keeps causing this issue.


\\ import pandas as pd
df = pd.DataFrame({"C"]})
df.drop_duplicates(subset=[''C'], keep=False)


DG=df.groupby([''C'])   
print pd.concat([DG.get_group(item) for item, value in DG.groups.items() if len(value)==1])

ฉันสามารถทำได้ใน VBA ด้วยบรรทัดเดียว แนวคิดใด ๆ ว่าทำไมสิ่งนี้ถึงทำให้เกิดปัญหานี้

โค้ดเอง เทมเพลต-

df = pd.read_excel("C:/wadwa.xlsx", sheetname=0)
columns_to_drop = ['d.1']
#columns_to_drop = ['d.1', 'b.1', 'e.1', 'f.1', 'g.1']


import pandas as pd


Df = df[[col for col in df.columns if col not in columns_to_drop]]
print(df)

writer = pd.ExcelWriter('C:/dadwa/dwad.xlsx')
df.to_excel(writer,'Sheet1')
writer.save()
print(df)

รหัส:

import pandas as pd

df = pd.read_excel("C:/Users/Documents/Book1.xlsx", sheetname=0)

import pandas as pd
df = df.drop_duplicates(subset=[df.columns[3]], keep=False)

writer = pd.ExcelWriter('C:/Users//Documents/Book2.xlsx')
df.to_excel(writer,'Sheet1')
writer.save()
print(df)

person Community    schedule 08.11.2017    source แหล่งที่มา
comment
ned มอบหมายกลับ df = df.drop_duplicates(subset=['C'], keep=False)   -  person jezrael    schedule 08.11.2017
comment
@jezrael มันไม่ชอบรหัสนั้นจริงๆ เกิดข้อผิดพลาดใหญ่เมื่อฉันใส่สิ่งนั้นเข้าไป   -  person    schedule 08.11.2017


คำตอบ (1)


ฉันคิดว่าคุณต้องมอบหมายกลับและเลือกคอลัมน์ที่ 4.th ตามตำแหน่ง:

df = df.drop_duplicates(subset=[df.columns[3]], keep=False)
person jezrael    schedule 08.11.2017
comment
ชุดข้อมูลยังคงไม่เปลี่ยนแปลง ฉันจะโพสต์ภาพ. - person ; 08.11.2017
comment
ข้อมูลเป็นความลับหรือไม่? หากไม่มี คุณช่วยส่งไฟล์ของคุณมาให้ฉันทางอีเมลในโปรไฟล์ของฉันได้ไหม เพราะดูเหมือนว่าปัญหาบางอย่างขึ้นอยู่กับข้อมูล ขอบคุณ. - person jezrael; 08.11.2017
comment
ฉันได้ใส่โค้ดที่มีปัญหาแทนลิงก์ภายนอกที่มีแนวโน้มที่จะใช้งานไม่ได้ ฉันเคยเห็นคนอื่นทำเช่นนี้มาบ้างแล้ว แต่ก็เพียงพอที่จะบอกว่าฉันไม่ควรเลียนแบบนิสัยที่ไม่ดีของผู้อื่น - person ; 08.11.2017
comment
หากไม่ลบค่าออก แสดงว่าข้อมูลมีปัญหา ดังนั้นให้ตรวจสอบช่องว่างหรือความแตกต่างอื่น ยากที่จะระบุปัญหาของคุณถ้าฉันไม่มีข้อมูลของคุณ :( - person jezrael; 08.11.2017
comment
ฉันใช้ windows 10 64 บิต และรหัสของฉันอยู่ท้ายคำถาม มีข้อความใน Excel แปลงเป็นดาต้าเฟรม ลบซ้ำ แล้วเขียนลงในสมุดงาน Excel แยกกัน ฉันจะพิมพ์เพื่อดูว่ามีข้อผิดพลาดหรือไม่ ฉันไม่คิดว่ามันจะเป็นการลบรายการที่ซ้ำกันออกไปเลยตามการพิมพ์ - person ; 08.11.2017
comment
ฉันเห็นมันแล้ว คอลัมน์แรกไม่นับ เนื่องจากดัชนี จึงต้อง df = df.drop_duplicates(subset=[df.columns[2]], keep=False) - ตรวจสอบคอลัมน์ที่ 3.rd - person jezrael; 08.11.2017
comment
ฉันทดสอบซ้ำสองสามครั้งแล้วได้ผลลัพธ์แปลกๆ รีเซ็ตทุกอย่างและเอาต์พุตไม่เปลี่ยนแปลง - person ; 08.11.2017
comment
ใช่ มันเป็นผลลัพธ์ที่ถูกต้อง เนื่องจากพารามิเตอร์ keep=False ir ลบทั้งสองแถวที่มีค่า D - person jezrael; 08.11.2017
comment
แถวแรกเป็นคอลัมน์และคอลัมน์แรกเรียกว่าดัชนี ดังนั้นจึงไม่มีใครแตะต้อง - person jezrael; 08.11.2017
comment
imgur.com/a/OIzqD มีแนวโน้มที่จะลบค่า e ทั้งสองในคอลัมน์ B และยังได้สร้าง ช่องว่าง - person ; 08.11.2017
comment
อืม เหตุผลควรเป็นช่องว่างเช่น df = pd.DataFrame({'b':['e','e',' ', ''],'c':['e','f','g', 'h']}) ตรวจสอบภายใน (df.drop_duplicates('b', keep=False)) - person jezrael; 08.11.2017
comment
ผลลัพธ์ในอุดมคติของฉันคือการลบคอลัมน์ C ที่ซ้ำกันออกและลบแถวข้อมูลข้างๆ ออกด้วย เพื่อให้ข้อมูลสวยงาม เรียบร้อย และใช้งานได้ นี่ไม่ได้ประพฤติตัวอย่างที่ฉันต้องการ - person ; 08.11.2017
comment
คอลัมน์ทั้งหมดถูกลบออก นี่มันแปลกมากจริงๆ - person ; 08.11.2017
comment
จะตรวจสอบเฉพาะคอลัมน์ C จากนั้นสำหรับฟังก์ชัน drop_duplicates คอลัมน์อื่นไม่เกี่ยวข้อง ดังนั้นจึงดูเหมือนว่าจะต้องการวิธีแก้ปัญหาที่ซับซ้อน ไม่ใช่แค่ drop_duplicatates - person jezrael; 08.11.2017
comment
บางสิ่งเช่น: df.append([df_try]*5,ignore_index=True) เพื่อผนวกข้อมูลสำหรับคอลัมน์ C ที่ด้านบนของแถวดังนั้นจึงไม่มีช่องว่างเช่นเดียวกับ a.loc[a.shift(-1) != a] เพื่อลบ แถวที่ซ้ำกันที่อยู่ติดกันถูกลบออกสำหรับคอลัมน์ C จนถึงตอนนี้ยังใช้งานไม่ได้ แต่ฉันรู้ว่าสามารถทำได้ - person ; 08.11.2017
comment
ไม่แน่ใจว่าเข้าใจหรือไม่ คุณช่วยเปลี่ยน df = pd.DataFrame({'b':['e','e',' ', ''],'c':['e','f','g', 'h']}) สิ่งที่คุณพูดถึงได้ไหม และคุณสามารถเพิ่มเอาต์พุตที่ต้องการได้หรือไม่? - person jezrael; 08.11.2017
comment
ฉันทำได้ดีกว่านี้ ฉันสามารถแสดงให้คุณเห็นสิ่งที่ฉันเห็นได้- ibb.co/jEQjSb - person ; 08.11.2017
comment
แล้วผลลัพธ์ที่ต้องการคืออะไร? ไม่แน่ใจว่าเข้าใจหรือเปล่า. - person jezrael; 08.11.2017
comment
โดยทั่วไปนี่คือสิ่งที่ฉันพยายามทำให้สำเร็จ - ibb.co/f08Dnb เป้าหมายคือการลบรายการที่ซ้ำกันในคอลัมน์ D + แถวเพื่อให้ดูเหมือนในภาพ - person ; 08.11.2017
comment
ต้องการเพียงค่าที่ซ้ำซ้อนเท่านั้นใช่ไหม จากนั้นต้องการเพียง (df.drop_duplicates('b', keep='first')) หรือ (df.drop_duplicates('b')) สิ่งที่เหมือนกัน หากต้องการเก็บค่าสุดท้ายไว้ (df.drop_duplicates('b', keep='last')) - person jezrael; 08.11.2017
comment
ข้อมูลมีขนาดค่อนข้างใหญ่และมีการซ้ำกันจำนวนมากในคอลัมน์นั้น ดังนั้นฉันจึงต้องการลบรายการที่ซ้ำกันทั้งหมดในคอลัมน์ D และแถวที่อยู่ติดกันดังที่เห็นในภาพ - person ; 08.11.2017
comment
ใช่ ดังนั้น df = df.drop_duplicates(subset=[df.columns[2]]) ควรทำงานได้อย่างสมบูรณ์แบบ - person jezrael; 08.11.2017
comment
ฉันสนใจคอลัมน์ 4 หรือ D ในกรณีนี้ นั่นดูเหมือนจะถูกต้อง ฉันไม่แน่ใจว่าทำไมถึงเป็นเช่นนั้นสำหรับคอลัมน์ 3 ใช่ไหม ฉันจะลองสิ่งนี้กับข้อมูลอื่น ๆ และดู - person ; 08.11.2017
comment
ปรากฎว่าแม้แต่ Excel ที่สร้างขึ้นใหม่ก็อาจเสียหายได้ง่าย ฉันคิดว่ามันมีแนวโน้มที่จะเกิดขึ้นเมื่อคุณรันโค้ดหลามที่แตกต่างกันมากมายกับพวกมัน ขอบคุณสำหรับความช่วยเหลือทั้งหมดของคุณ ฉันควรจะส่งไฟล์ให้คุณก่อนหน้านี้ แต่ทุกอย่างก็จบลงด้วยดี - person ; 08.11.2017
comment
ดูเหมือนว่าจะลบรายการที่ซ้ำกันทั้งหมดบันทึก 2 สงสัยว่าทำไมถึงเป็นเช่นนั้น - person ; 09.11.2017