2024-05-16 19:24:35 发布
网友
我想转换如下数据帧:
id event_type count 1 "a" 3 1 "b" 5 2 "a" 1 3 "b" 2
进入数据帧,如:
id a b a > b 1 3 5 0 2 1 0 1 3 0 2 0
不使用for循环。什么是适当的Python(熊猫补药?)怎么做?你知道吗
这可以分为两部分。你知道吗
解决方案
df.set_index( [‘id’, ‘event_type’] )[‘count’].unstack( fill_value=0 ).assign(**{ ‘a < b’: lambda d: d.eval(‘a < b’) })
嗯,不确定这是否正是你需要的,或者它是否必须比这更灵活。然而,这将是一种方法——假设丢失的值可以被0替换。你知道吗
0
import pandas as pd from io import StringIO # Creating and reading the data data = """ id event_type count 1 "a" 3 1 "b" 5 2 "a" 1 3 "b" 2 """ df = pd.read_csv(StringIO(data), sep='\s+') # Transforming df_ = pd.pivot_table(df, index='id', values='count', columns='event_type') \ .fillna(0).astype(int) df_['a > b'] = (df_['a'] > df_['b']).astype(int)
其中df_将采用以下形式:
df_
event_type a b a > b id 1 3 5 0 2 1 0 1 3 0 2 0
这可以分为两部分。你知道吗
解决方案
嗯,不确定这是否正是你需要的,或者它是否必须比这更灵活。然而,这将是一种方法——假设丢失的值可以被
0
替换。你知道吗其中
df_
将采用以下形式:相关问题 更多 >
编程相关推荐