我需要在Impresiones_exchange
列中过滤我的CSV,其值大于10.当我这样做时,我会收到一个新的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')
答案 0 :(得分:2)
替换此行:
a = df['Impresiones_exchange'] > 10
有这样的事情:
a = df[df['Impresiones_exchange'] > 10]
您的代码不起作用的原因是您的a
设置为布尔系列。实际上,您想要的是使用布尔系列来索引数据帧。
答案 1 :(得分:0)
使用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)