pandas 对数据帧DataFrame中数据的增删补全及转换操作

Posted hl-space

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pandas 对数据帧DataFrame中数据的增删补全及转换操作相关的知识,希望对你有一定的参考价值。

1、创建数据帧

import pandas as pd

df = pd.DataFrame([[1, A, 3% ], [2, B], [3, C, 5%]], index=[row_0, row_1, row_2], columns=[col_0, col_1, col_2])

技术图片

2、增加行、列

  数据帧DataFrame的每一行都可看作是一个对象,每一列都是该对象的不同属性。每行都具有多维度的属性,因此每行都可以看作是一个小的DataFrame;而每列的数据类型都相同,因此每列都可以看作是一个Series。

2.1 增加行

  创建新的DataFrame追加至原有数据帧的尾部,即可实现行的增加。通过df.append()实现行的追加。

# 创建新的数据帧
df_row3 = pd.DataFrame([[4, D, 9%]], index=[row_3], columns=[col_0, col_1, col_2])
# 追加至原有数据帧尾部
df = df.append(df_row3)

技术图片

2.2 增加列

  创建新的Series追加至原有数据帧的尾部,即可实现列的增加。

# 创建新系列作为新追加的列
df[col_4] = pd.Series([!, @, $, &], index=[row_0, row_1, row_2, row_3])

技术图片

3、删除行、列

3.1 删除行  

  通过向df.drop()中传入行索引实现对行的删除。

# 删除最后一行
df = df.drop(row_3)

技术图片

3.2 删除列

  通过del 或df.pop() 删除索引值对应的列。

# del df[‘col_4‘],删除最后一列,与下句代码等价
df.pop(col_4)

  注意:df.pop()实现了对df的删除操作,其返回值是被删除的列,而不是新的df。

技术图片

4、数据补全

  可以看出,row_1行,col_2列对应位置的元素为空,在实际计算过程中,需对空数据进行补全。可通过df.fillna()对df的空数据进行补全,这里以补0为例。

# df.fillna(0, inplace=True),就地补0,与下句代码等价
df = df.fillna(0)

技术图片

5、元素转换

  可以看出,在col_2列中的‘3%’及‘5%’均为有效的数值数据,但其类型均为‘str’,不能直接参与数学运算。需遍历df,找出其在df中的位置,将其替换为float型数据。

for i in range(len(df.index)):
    for j in range(len(df.columns)):
        # df中元素各种类型都有,为了方便检测其中是否含有‘%’,将其统一转换为‘str’型
        if % in str(df.iat[i, j]):
            df.iat[i, j] = float(df.iat[i, j].replace(%, ‘‘)) / 100

技术图片

 

以上是关于pandas 对数据帧DataFrame中数据的增删补全及转换操作的主要内容,如果未能解决你的问题,请参考以下文章

通过 pyspark.sql.dataframe 将 XML 数据转换为 pandas 数据帧

Pandas:按行数将数据帧拆分为多个数据帧

PYTHON Pandas - 根据其他数据帧中的值对数据帧使用 Pandas 样式

Pandas Dataframe:将对角线子帧减少为单行或如何逐个填充数据帧

Pandas统计分析基础:DataFrame功能介绍及DataFrame中元素的增删改查

基于时间间隔使用 DatetimeIndex 对 Pandas 数据帧进行切片