首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在熊猫中使用大数据集

在熊猫中使用大数据集
EN

Stack Overflow用户
提问于 2017-11-19 20:06:08
回答 1查看 146关注 0票数 0

我一直在使用这个数据集:https://www.kaggle.com/nsharan/h-1b-visa

我已经将主要数据分成两部分:

soc_null dataframe -其中SOC_NAME列有NaN值

soc_not_null -其中SOC_NAME列的值不是NaN

为了在NaN dataframe的SOC_NAME列中填充soc_null值,我编写了以下代码:

代码语言:javascript
复制
for index1, row1 in soc_null.iterrows():
    for index2, row2 in soc_not_null.iterrows():
        if row1['JOB_TITLE'] == row2['JOB_TITLE']:
            soc_null.set_value(index1,'SOC_NAME',row2['SOC_NAME'])

这个代码的问题是,soc_null的长度是17734,soc_not_null的长度是2984724,我运行了几个小时,但是只有几百个值被更新了,因此不可能在一台机器上完全执行这个n^2复杂性代码。

我相信必须有更好的方法来做到这一点,可能还有比我的更大的数据集,因为在清理过程之后还有其他几个部分需要两个循环来处理。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-19 20:39:10

有一些nice posts可以解释您需要什么。这里有一个解决方案:

代码语言:javascript
复制
import pandas as pd
import numpy as np

values = [
    {'JOB_TITLE':'secretary', 'SALARY':30000},
    {'JOB_TITLE':'programmer', 'SALARY':60000},
    {'JOB_TITLE':'manager', 'SALARY':None},
    {'JOB_TITLE':'president', 'SALARY':None},
]

secret_values = [
    {'JOB_TITLE':'manager', 'SALARY':150000},
    {'JOB_TITLE':'president', 'SALARY':1000000},
]

df = pd.DataFrame(values)
df_secret = pd.DataFrame(secret_values)
df.set_index('JOB_TITLE', inplace=True)
df_secret.set_index('JOB_TITLE', inplace=True)

df.combine_first(df_secret).reset_index()

PS:避免在大型数据集中使用for-每个循环。使用Pandas.DataFrame和其他优化的东西。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47381459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档