python - Pandas 数据框删除每个数字的第一行

标签 python pandas dataframe

所以,基本上我有一个数据框,其第一列如下所示:

#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/

相关文章:

python - Pandas 直方图按多个属性分组

python - 根据条件创建虚拟 DataFrame

python - 带有日期时间索引的 Pandas Pivot

python - 迭代数据框

python - Heroku 上的 Django : relation does not exist

python - 在 Ubuntu 上安装 pgAdmin - 不工作

python - 为什么 kivy 一次更改所有小部件

python - (Python) 阻塞子进程

python - 在多索引数据帧中 .columns.levels[1] 在 groupby 之后给出整个数据帧的列

r - 对象错误[[名称,精确 = TRUE]] : subscript out of bounds