Pandas 五:怎样新增数据列

在进行数据分析时,经常需要按照一定条件创建新的数据列,然后进行进一步分析。
1.直接赋值
2.df.apply方法
3.df.assign方法
4.按条件选择分组分别赋值
1

import pandas as pd

0、读取csv数据到dataframe

fpath = "./datas/beijing_tianqi/beijing_tianqi_2018.csv"
df = pd.read_csv(fpath)

No output
3

df.head()
ymd bWendu  yWendu  tianqi  fengxiang   fengli  aqi aqiInfo aqiLevel
0   2018-01-01  3℃  -6℃ 晴~多云    东北风 1-2级    59  良   2
1   2018-01-02  2℃  -5℃ 阴~多云    东北风 1-2级    49  优   1
2   2018-01-03  2℃  -5℃ 多云  北风  1-2级    28  优   1
3   2018-01-04  0℃  -8℃ 阴   东北风 1-2级    28  优   1
4   2018-01-05  3℃  -6℃ 多云~晴    西北风 1-2级    50  优   1

1、直接赋值的方法

实例:清理温度列,变成数字类型
4

替换掉温度的后缀℃

df.loc[:, “bWendu”] = df[“bWendu”].str.replace(“℃”, “”).astype(‘int32’)
df.loc[:, “yWendu”] = df[“yWendu”].str.replace(“℃”, “”).astype(‘int32’)


No output
6

`python
df.head()
ymd bWendu  yWendu  tianqi  fengxiang   fengli  aqi aqiInfo aqiLevel
0   2018-01-01  3   -6  晴~多云    东北风 1-2级    59  良   2
1   2018-01-02  2   -5  阴~多云    东北风 1-2级    49  优   1
2   2018-01-03  2   -5  多云  北风  1-2级    28  优   1
3   2018-01-04  0   -8  阴   东北风 1-2级    28  优   1
4   2018-01-05  3   -6  多云~晴    西北风 1-2级    50  优   1

实例:计算温差
9


df.loc[:, "wencha"] = df["bWendu"] - df["yWendu"]

No output
10

df.head()
ymd bWendu  yWendu  tianqi  fengxiang   fengli  aqi aqiInfo aqiLevel    wencha
0   2018-01-01  3   -6  晴~多云    东北风 1-2级    59  良   2   9
1   2018-01-02  2   -5  阴~多云    东北风 1-2级    49  优   1   7
2   2018-01-03  2   -5  多云  北风  1-2级    28  优   1   7
3   2018-01-04  0   -8  阴   东北风 1-2级    28  优   1   8
4   2018-01-05  3   -6  多云~晴    西北风 1-2级    50  优   1   9

2、df.apply方法

Apply a function along an axis of the DataFrame.

Objects passed to the function are Series objects whose index is either the DataFrame’s index (axis=0) or the DataFrame’s columns (axis=1).

实例:添加一列温度类型:

1.如果最高温度大于33度就是高温
2.低于-10度是低温
3.否则是常温
11

def get_wendu_type(x):
    if x["bWendu"] > 33:
        return '高温'
    if x["yWendu"] < -10:
        return '低温'
    return '常温'

df.loc[:, "wendu_type"] = df.apply(get_wendu_type, axis=1)

No output
12


df["wendu_type"].value_counts()
常温    328
高温     29
低温      8
Name: wendu_type, dtype: int64

3、df.assign方法

Assign new columns to a DataFrame.

Returns a new object with all original columns in addition to new ones.

实例:将温度从摄氏度变成华氏度
13


df.assign(
    yWendu_huashi = lambda x : x["yWendu"] * 9 / 5 + 32,

    bWendu_huashi = lambda x : x["bWendu"] * 9 / 5 + 32
)
ymd bWendu  yWendu  tianqi  fengxiang   fengli  aqi aqiInfo aqiLevel    wencha  wendu_type  yWendu_huashi   bWendu_huashi
0   2018-01-01  3   -6  晴~多云    东北风 1-2级    59  良   2   9   常温  21.2    37.4
1   2018-01-02  2   -5  阴~多云    东北风 1-2级    49  优   1   7   常温  23.0    35.6
2   2018-01-03  2   -5  多云  北风  1-2级    28  优   1   7   常温  23.0    35.6
3   2018-01-04  0   -8  阴   东北风 1-2级    28  优   1   8   常温  17.6    32.0
4   2018-01-05  3   -6  多云~晴    西北风 1-2级    50  优   1   9   常温  21.2    37.4
... ... ... ... ... ... ... ... ... ... ... ... ... ...

360 2018-12-27  -5  -12 多云~晴    西北风 3级  48  优   1   7   低温  10.4    23.0
361 2018-12-28  -3  -11 晴   西北风 3级  40  优   1   8   低温  12.2    26.6
362 2018-12-29  -3  -12 晴   西北风 2级  29  优   1   9   低温  10.4    26.6
363 2018-12-30  -2  -11 晴~多云    东北风 1级  31  优   1   9   低温  12.2    28.4
364 2018-12-31  -2  -10 多云  东北风 1级  56  良   2   8   常温  14.0    28.4
365 rows × 13 columns

4、按条件选择分组分别赋值

按条件先选择数据,然后对这部分数据赋值新列
实例:高低温差大于10度,则认为温差大
14


df['wencha_type'] = ''

df.loc[df["bWendu"]-df["yWendu"]>10, "wencha_type"] = "温差大"

df.loc[df["bWendu"]-df["yWendu"]10, "wencha_type"] = "温差正常"

No output
15

df["wencha_type"].value_counts()
温差正常    187
温差大     178
Name: wencha_type, dtype: int64

Original: https://blog.csdn.net/cai_and_luo/article/details/117035198
Author: 蔡大远
Title: Pandas 五:怎样新增数据列

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/676053/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球