【发布时间】:2020-06-11 21:25:33
【问题描述】:
我在处理 Python 时遇到了麻烦。我有 PD 数据框,我需要删除所有行,这些行是在特定值之后出现的(在代码中,值被写入称为年份的列表)所有值都应该按公司名称分组,因为这些观察属于列'inn_main 中提到的公司'。我真的不明白如何使用 Pandas 功能做到这一点。虽然我找到了一种方法,但它非常丑陋且效率不高。
import pandas as pd
data = {'inn_main':['Apple', 'Apple', 'Apple', 'Apple', 'Tesla', 'Tesla', 'Tesla'], 'Help':['OK', 'OK', 2013, 'OK','OK', 2014, 'OK']}
df = pd.DataFrame(data)
droper=[]
block=0
years=[2012,2013,2014,2015,2016,2017,2018]
for j in range(len(list(df['Help'].groupby(df['inn_main'])))):
alarm=0
for i in range(len(list(df['Help'].groupby(df['inn_main']))[j][1].index.values)):
if list(df['Help'].groupby(df['inn_main']))[j][1][list(df['Help'].groupby(df['inn_main']))[j][1].index.values[i].astype(int)] in years:
block=1
alarm=1
if block==1:
block=0
else:
if alarm==1:
droper.append(list(df['Help'].groupby(df['inn_main']))[j][1].index.values[i].astype(int))
df.drop(index=droper)
你能告诉我我到底做错了什么吗?有什么捷径吗?
【问题讨论】:
-
发布一个您希望 DataFrame 输出看起来像什么的示例
-
你能试着用文字解释你正在使用的逻辑吗?
标签: python pandas pandas-groupby