在Pandas中进行分组前筛选出列

时间:2017-10-24 14:05:04

标签: pandas csv

我正在从CSV文件加载数据:

df = pd.read_csv('myFile.csv', encoding = "ISO-8859-1", 
                        parse_dates=['Start Date', 'End Date'])

然后我正在对数据进行分组并汇总:

df['Clean'] = (df['Value'] - df['Value2']).round(decimals=0)


#Group by and aggregate (return Earliest Start Date, Latest End Date and SUM of the Values)
groupedBy = df.groupby([df['ID'], df['Name'].fillna('Other'),df['Site']]).agg({'Start Date': 'min', 'End Date': 'max', 'Value': 'sum', 'Value2': 'sum', 'Clean': 'sum'})

我要做的就是添加一个IF语句以排除某些行。所以,如果列" A"字段包含" XXX"值,它将返回行:

if df['A'].str.contains('xxx'):
    groupedBy = df.groupby([df['ID'], df['Name'].fillna('Other'), df['Site']]).agg({'Start Date': 'min', 'End Date': 'max', 'Value': 'sum', 'Value2': 'sum', 'Clean': 'sum'})

它失败了。我尝试在堆栈上搜索并使用其他版本但没有成功。我是否必须在我的分组的agg部分中包含该内容?为什么IF语句失败?

1 个答案:

答案 0 :(得分:0)

var json = myWebClient.DownloadString("https://api.gdax.com/products/btc-usd/book?level=2");

之前过滤您的DataFrame
groupby