Python 基于其他列从公共列dataframe中删除内容
我有一个8列的数据框。某些行仅在某些列中有所不同。我想删除重复材料的内容。假设C1列和C2列是键,C3列和C4列是一组C5的值,c6列是另一组的值 这是我的Python 基于其他列从公共列dataframe中删除内容,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个8列的数据框。某些行仅在某些列中有所不同。我想删除重复材料的内容。假设C1列和C2列是键,C3列和C4列是一组C5的值,c6列是另一组的值 这是我的 | C1 | C2 | C3 | C4 | C5 | C6| |A | C | E | F | H | I| |A | C | E | F | H | J| |B | D | E | F | H | I| |B | D | E | G | H | I| 这是我想要的 | C1 | C2 | C3 | C4 | C5 | C6| |A |
| C1 | C2 | C3 | C4 | C5 | C6|
|A | C | E | F | H | I|
|A | C | E | F | H | J|
|B | D | E | F | H | I|
|B | D | E | G | H | I|
这是我想要的
| C1 | C2 | C3 | C4 | C5 | C6|
|A | C | E | F | H | I|
|| | | | H | J|
|B | D | E | F | H | I|
|| | E | G | ||
这不是最优雅的方式,但它应该可以工作
import pandas as pd
data = [['C1','C2','C3','C4','C5','C6'],
['A' ,'C' ,'E' ,'F' ,'H' ,'I'],
['A' ,'C' ,'E' ,'F' ,'H','J'],
['B' ,'D' ,'E' ,'F' ,'H' ,'I'],
['B' ,'D','E','G' ,'H','I']]
df = pd.DataFrame(data[1:])
df.columns = data[0]
new_data = []
for index, row in df.iterrows():
if index == 0:
pass
else:
current_row = df.iloc[index]
last_row = df.iloc[index-1]
new_row = []
if [last_row['C1'], last_row['C2']] != [current_row['C1'], current_row['C2']]:
new_row.append([current_row['C1'], current_row['C2']])
else:
new_row.append(['', ''])
if [last_row['C3'], last_row['C4']] != [current_row['C3'], current_row['C4']]:
new_row.append([current_row['C3'], current_row['C4']])
else:
new_row.append(['', ''])
if [last_row['C5'], last_row['C6']] != [current_row['C5'], current_row['C6']]:
new_row.append([current_row['C5'], current_row['C6']])
else:
new_row.append(['', ''])
new_data.append([item for sublist in new_row for item in sublist])
print (pd.DataFrame(new_data))
我的错误,改变了问题如果我有三行包含相同的键怎么办?或者四行?您可能需要调整三个连续的if语句,并计算df.iloc[index-2]和df.iloc[index-3]等。。。