Select Python 数据框中每第 n 个元素的第 n 行
Select nth rows every nth element in Python dataframe
我正在读取一个 .csv 文件,其中日期作为索引,状态作为列。
像这样:
日期从 1950 年 1 月到 2022 年 4 月,我想改变数据框的切片,例如我想获取所有的一月和二月(从 1950 年到 2022 年),所以它看起来像这样
我知道我可以用 data.iloc[0::12]
select 每个第 n 个元素,所以我尝试做类似 data.iloc[(0:1)::12]
的事情,但它不起作用。
如何按照我想要的方式切片?
提前致谢
您可以为此使用 startswith() 选项
df = df[(df['Date'].str.startswith('Ene')) | (df['Date'].str.startswith('Feb'))]
似乎iloc
支持lambda函数。所以如果你想要你的方式:
df.iloc[lambda x:(x.index % 12).isin([0,1])]
但是,对于您的情况,使用 str.startswith 似乎更好
df[df.index.str.startswith('Ene') | df.index.str.startswith('Feb')]
我正在读取一个 .csv 文件,其中日期作为索引,状态作为列。
像这样:
日期从 1950 年 1 月到 2022 年 4 月,我想改变数据框的切片,例如我想获取所有的一月和二月(从 1950 年到 2022 年),所以它看起来像这样
我知道我可以用 data.iloc[0::12]
select 每个第 n 个元素,所以我尝试做类似 data.iloc[(0:1)::12]
的事情,但它不起作用。
如何按照我想要的方式切片?
提前致谢
您可以为此使用 startswith() 选项
df = df[(df['Date'].str.startswith('Ene')) | (df['Date'].str.startswith('Feb'))]
似乎iloc
支持lambda函数。所以如果你想要你的方式:
df.iloc[lambda x:(x.index % 12).isin([0,1])]
但是,对于您的情况,使用 str.startswith 似乎更好
df[df.index.str.startswith('Ene') | df.index.str.startswith('Feb')]