Python Pandas 丢弃连续的数据帧,但末尾的句点 (.) 是区分符
Python Pandas Drop Consecutive Data Frames but Period (.) at the End is the Differentiator
您好,我的 pandas 数据框有一部分重复,但差异很小。
唯一的区别是末尾有一个句点。
Header A
First
First.
我只想删除没有句点的重复行。
首先按 Header A
排序,然后删除最后一个 .
并按 Series.duplicated
:
获取最后一个重复值
print (df)
Header A
0 First.
1 First
2 First.
3 Second.
4 Second
5 Third
6 Third
df1 = df.sort_values('Header A')
df1 = df1[~df1['Header A'].str.rstrip('.').duplicated(keep='last')]
print (df1)
Header A
2 First.
3 Second.
6 Third
如果需要优先考虑没有 .
的值:
df1 = df.sort_values('Header A')
df2 = df1[~df1['Header A'].str.rstrip('.').duplicated()]
print (df2)
Header A
1 First
4 Second
5 Third
或尝试 loc
:
>>> x = df['Header A'].str.split('.', expand=True)
>>> df.loc[x[0].duplicated(keep=False) & x[1].isna()]
Header A
0 First
>>>
您好,我的 pandas 数据框有一部分重复,但差异很小。
唯一的区别是末尾有一个句点。
Header A |
---|
First |
First. |
我只想删除没有句点的重复行。
首先按 Header A
排序,然后删除最后一个 .
并按 Series.duplicated
:
print (df)
Header A
0 First.
1 First
2 First.
3 Second.
4 Second
5 Third
6 Third
df1 = df.sort_values('Header A')
df1 = df1[~df1['Header A'].str.rstrip('.').duplicated(keep='last')]
print (df1)
Header A
2 First.
3 Second.
6 Third
如果需要优先考虑没有 .
的值:
df1 = df.sort_values('Header A')
df2 = df1[~df1['Header A'].str.rstrip('.').duplicated()]
print (df2)
Header A
1 First
4 Second
5 Third
或尝试 loc
:
>>> x = df['Header A'].str.split('.', expand=True)
>>> df.loc[x[0].duplicated(keep=False) & x[1].isna()]
Header A
0 First
>>>