pandas 如何根据索引的值删除行

bq3bfh9z  于 2023-05-21  发布在  其他
关注(0)|答案(3)|浏览(157)

我想删除基于索引值的行,但我并不意味着列出它们。我想看看有没有一种方法,我不能手动列出年份。
我想删除索引低于2000的行,有没有办法用一个公式来做到这一点,我想像drop(label=[df.index<2000]
显然代码是不正确的,但我希望它给出了一个想法,我想要发生的事情。

wa7juj8i

wa7juj8i1#

要选择值大于2000的所有索引,可以使用df.index>2000。要过滤大于或等于,请使用df.index>=2000。这将减少原始DataFrame并删除索引较小的所有值。要查看差异,您可以创建一个副本并与原始数据进行比较。

import pandas as pd
df = pd.DataFrame({'a':[0,1,2,3,4]}, index=[1998.0,1999,2000,2001,2002])
dropped_df = df[df.index>2000].copy()
>>> dropped_df
        a
2001.0  3
2002.0  4
qzlgjiam

qzlgjiam2#

这里有一种方法:

import numpy as np
import pandas as pd

# Set the random seed for reproducibility
np.random.seed(42)

# Generate a random DataFrame
index_values = np.arange(1000, 3001)  # Index values between 1000 and 3000
data = np.random.randn(len(index_values), 3)  # Random data
columns = ['A', 'B', 'C']  # Column names

df = pd.DataFrame(data, index=index_values, columns=columns)

# Drop rows where index is below 2000
df_filtered = df.drop(df[df.index < 2000].index)

# Print the resulting DataFrame
print(df_filtered)

过滤前:

A         B         C
1000  0.496714 -0.138264  0.647689
1001  1.523030 -0.234153 -0.234137
1002  1.579213  0.767435 -0.469474
1003  0.542560 -0.463418 -0.465730
1004  0.241962 -1.913280 -1.724918
...        ...       ...       ...
2996  0.434941 -0.393987  0.537768
2997  0.306389 -0.998307  0.518793
2998  0.863528  0.171469  1.152648
2999 -1.217404  0.467950 -1.170281
3000 -1.114081 -0.630931 -0.942060

过滤后:

A         B         C
2000 -1.907808 -0.860385 -0.413606
2001  1.887688  0.556553 -1.335482
2002  0.486036 -1.547304  1.082691
2003 -0.471125 -0.093636  1.325797
2004 -1.287164 -1.397118 -0.583599
...        ...       ...       ...
2996  0.434941 -0.393987  0.537768
2997  0.306389 -0.998307  0.518793
2998  0.863528  0.171469  1.152648
2999 -1.217404  0.467950 -1.170281
3000 -1.114081 -0.630931 -0.942060
ilmyapht

ilmyapht3#

你可以试试boolean index -

df = df.drop(df[df.index < 2000].index)

相关问题