Pandas使用Dict将变量值​​替换为'0'

时间:2017-07-16 09:30:12

标签: python pandas dictionary dataframe replace

我有一个带有邮政编码和收入的数据框。一些收入是= 0,这是错误的。

我有一个字典,每个邮政编码都映射到该邮政编码中所有收入的平均收入。

我想将数据框中= 0的所有收入替换为相应邮政编码的平均收入值。

我试过这个:

income = []
for row in df['income']:
    if row == 0:
        income.replace({0:{income_zip}}, inplace = True)
    else:
        income.append(row)

无济于事。我发现有很多资源用相同的值替换所有0,我只是不确定如何根据行中的另一个值从dict中替换一个带有变量值的0。

3 个答案:

答案 0 :(得分:1)

您还可以定义转换函数,并沿轴1(行)在数据框上使用#include <experimental/thread_pool> #include <iostream> #include <tuple> namespace execution = std::experimental::execution; using std::experimental::static_thread_pool; template <class Executor, class Function> auto async(Executor ex, Function f) { return execution::require(ex, execution::twoway).twoway_execute(std::move(f)); } int main() { static_thread_pool pool{1}; auto f = async(pool.executor(), []{ return 42; }); std::cout << "result is " << f.get() << "\n"; }

apply

答案 1 :(得分:0)

你想说这个吗?

income = []
for row in df['income']:
    if row == 0:
        df['income'].replace({0:{income_zip}}, inplace = True)
    else:
        income.append(row)

答案 2 :(得分:0)

或者这个单行:

df['income'] = map(lambda x, y : y if y != 0 else income_zip[x], *[df['zip_codes'], df['income']])