用Pandas过滤CSV

2024-10-03 11:13:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要在Impresiones_exchange列中筛选值大于10的CSV。当我这样做时,我收到一个新的CSV(ssss.csv),只有一个列和一个True或False值。如前所述,我需要在df["eCPM_a_pagar_a_medio"]之后过滤大于10的值。在

def group():
    df = pd.read_csv('Impresiones_VIDEO.csv', sep=',')
    df = df.groupby(["Cliente","Sitio","Country"], as_index=False)['Subastas', 'Impresiones_exchange', 'Importe_a_cobrar', 'Importe_a_pagar_a_medio'].sum()
    df["Fill_rate"] = ((df.Impresiones_exchange / df.Subastas )* 100).round(2)
    df["eCPM_a_cobrar"] = ((df.Importe_a_cobrar / df.Impresiones_exchange )* 1000).round(2)
    df["eCPM_a_pagar_a_medio"] = ((df.Importe_a_pagar_a_medio / df.Impresiones_exchange )* 1000).round(2)
    a = df['Impresiones_exchange'] > 10
    a.to_csv('ssss.csv')

Tags: csvfalsetruedfexchangeroundpagarimpresiones
2条回答

替换此行:

a = df['Impresiones_exchange'] > 10

像这样:

^{pr2}$

代码不能工作的原因是您的a被设置为布尔序列。实际上,您需要的是使用布尔序列来索引数据帧。在

使用query我可以过滤csv列的值并获取所有列!在

def group():
    df = pd.read_csv('Impresiones_VIDEO.csv', sep=',')
    df = df.groupby(["Cliente","Sitio","Country"], as_index=False)['Subastas', 'Impresiones_exchange', 'Importe_a_cobrar', 'Importe_a_pagar_a_medio'].sum()
    df["Fill_rate"] = ((df.Impresiones_exchange / df.Subastas )* 100).round(2)
    df["eCPM_a_cobrar"] = ((df.Importe_a_cobrar / df.Impresiones_exchange )* 1000).round(2)
    df["eCPM_a_pagar_a_medio"] = ((df.Importe_a_pagar_a_medio / df.Impresiones_exchange )* 1000).round(2)
    df_filtered = df.query('Impresiones_exchange>10')
    df_filtered.to_csv('Impresiones_VIDEO.csv', index=False)

相关问题 更多 >