gpt4 book ai didi

使用 np.where() 构建 Pandas 列

转载 作者:行者123 更新时间:2023-12-04 12:22:38 25 4
gpt4 key购买 nike

我正在完成与 Pandas 的分配工作,并使用 np.where() 创建向 Pandas DataFrame 添加一个列,其中包含三个可能的值:

fips_df['geog_type'] = np.where(fips_df.fips.str[-3:] != '000', 'county', np.where(fips_df.fips.str[:] == '00000', 'country', 'state'))

添加列后DataFrame的状态是这样的:
print fips_df[:5]

fips geog_entity fips_prefix geog_type
0 00000 UNITED STATES 00 country
1 01000 ALABAMA 01 state
2 01001 Autauga County, AL 01 county
3 01003 Baldwin County, AL 01 county
4 01005 Barbour County, AL 01 county

此列构造由两个断言测试。第一个通过,第二个失败。
## check the numbers of geog_type

assert set(fips_df['geog_type'].value_counts().iteritems()) == set([('state', 51), ('country', 1), ('county', 3143)])

assert set(fips_df.geog_type.value_counts().iteritems()) == set([('state', 51), ('country', 1), ('county', 3143)])

将列调用为 fips_df.geog_type 和 fips_df['geog_type'] 导致我的第二个断言失败有什么区别?

最佳答案

以防万一,您可以轻松创建一个新列。例如。:

In [1]: import pandas as pd

In [2]: import numpy as np

In [3]: df = pd.DataFrame(np.random.uniform(size=10))

In [4]: df
Out[4]:
0
0 0.366489
1 0.697744
2 0.570066
3 0.756647
4 0.036149
5 0.817588
6 0.884244
7 0.741609
8 0.628303
9 0.642807

In [5]: categorize = lambda value: "ABC"[int(value > 0.3) + int(value > 0.6)]

In [6]: df["new_col"] = df[0].apply(categorize)

In [7]: df
Out[7]:
0 new_col
0 0.366489 B
1 0.697744 C
2 0.570066 B
3 0.756647 C
4 0.036149 A
5 0.817588 C
6 0.884244 C
7 0.741609 C
8 0.628303 C
9 0.642807 C

关于使用 np.where() 构建 Pandas 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14974459/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com