datafram的for循环优化

2024-06-09 05:58:00 发布

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

基于原始数据帧的行值,我需要更改另一个数据帧行值。这段代码可以工作,但执行时间很长。你知道吗

我尝试了多种形式的for循环和函数(iterrows、iteritems、apply),但都没用。你知道吗

这是我的密码:

%%timeit
for value in tqdm(range(len(data['DPS_NUM']))):
    for col_nm in ts_col:
        temp = data[col_nm][value]
        if temp != '':
            data2[temp][value] = 1

原始数据帧:

col1 col2 col3 col4
123  foo  bar  zoo
456  bar  foo
789  zoo  zoo

预期数据帧:

col1 foo bar zoo
123   1   1   1
456   1   1   1
789           1

我的代码工作,但它的速度很慢,我需要优化它。你知道吗


Tags: 数据代码infordata原始数据foovalue
1条回答
网友
1楼 · 发布于 2024-06-09 05:58:00

对每列使用^{}和聚合max

#if first column is index
df = pd.get_dummies(df, prefix ='', prefix_sep='').max(axis=1, level=0)
print (df)
      bar  foo  zoo
col1               
123     1    1    1
456     1    1    0
789     0    0    1


#if first column is not index
#df = pd.get_dummies(df.set_index('col1'), prefix ='', prefix_sep='').max(axis=1, level=0)

相关问题 更多 >