所以,基本上我有一个数据框,其第一列如下所示:
#1
#2
#2
#3
#3
#3
#3
#4
#4
#5
如您所见,第一列由随机重复的数字组成。
首先,我必须删除所有“#”,然后我必须删除每个数字的第一行。因为,#1 只有一行,它应该消失,只剩下 #2 的第二行,,,依此类推。
最佳答案
假设您有一个包含两列的数据框 df
设置
col1 = """#1
#2
#2
#3
#3
#3
#3
#4
#4
#5""".splitlines()
df = pd.DataFrame(dict(col1=col1, col2=3.14))
df
col1 col2
0 #1 3.14
1 #2 3.14
2 #2 3.14
3 #3 3.14
4 #3 3.14
5 #3 3.14
6 #3 3.14
7 #4 3.14
8 #4 3.14
9 #5 3.14
解决方案
我们可以使用 Numpy 的 unique
函数并将 return_index
设置为 True
。这样做是返回每个唯一值的第一个实例的位置。然后我们使用它来识别索引值并删除它们。
_, i = np.unique(df.col1.values, return_index=True)
df.drop(df.index[i]).assign(col1=lambda d: d.col1.str[1:])
col1 col2
2 2 3.14
4 3 3.14
5 3 3.14
6 3 3.14
8 4 3.14
关于python - Pandas 数据框删除每个数字的第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47808033/