padans给Dataframe插入新增列、行

刘超 1月前 ⋅ 760 阅读   编辑
import pandas as pd
df1 = pd.DataFrame([['Snow','M',22],['Tyrion','M',32],['Sansa','F',18],['Arya','F',14]], columns=['name','gender','age'])
# 新增一列相同的数据
df1['advertiser_id'] = 'adv3282638354816'
# ----------在最后新增一列---------------
# -------案例1----------
>>> # 在数据框最后加上score一列,元素值分别为:80,98,67,90
... df1['score']=[80,98,67,90]   # 增加列的元素个数要跟原数据列的个数一样
>>> print(df1)
     name gender  age  score
0    Snow      M   22     80
1  Tyrion      M   32     98
2   Sansa      F   18     67
3    Arya      F   14     90

# -------案例2----------
# ---------在指定位置新增列:用insert()--------
# 在gender后面加一列城市
# 在具体某个位置插入一列可以用insert的方法
# 语法格式:列表.insert(index, obj)
# index --->对象 obj 需要插入的索引位置。
# obj ---> 要插入列表中的对象(列名)
>>> col_name=df1.columns.tolist()                   # 将数据框的列名全部提取出来存放在列表里
>>> print(col_name)
['name', 'gender', 'age', 'score']
>>> col_name.insert(2,'city')                      # 在列索引为2的位置插入一列,列名为:city,刚插入时不会有值,整列都是NaN
>>> df1=df1.reindex(columns=col_name)              # DataFrame.reindex() 对原行/列索引重新构建索引值
>>> df1
     name gender  city  age  score
0    Snow      M   NaN   22     80
1  Tyrion      M   NaN   32     98
2   Sansa      F   NaN   18     67
3    Arya      F   NaN   14     90
>>> df1['city']=['北京','山西','湖北','澳门']   # 给city列赋值
>>> df1
     name gender city  age  score
0    Snow      M   北京   22     80
1  Tyrion      M   山西   32     98
2   Sansa      F   湖北   18     67
3    Arya      F   澳门   14     90

# Define a dictionary containing Students data 
data = {'Name': ['Jai', 'Princi', 'Gaurav', 'Anuj'],'Height': [5.1, 6.2, 5.1, 5.2],'Qualification': ['Msc', 'MA', 'Msc', 'Msc']} 

# Convert the dictionary into DataFrame 
df = pd.DataFrame(data) 

# Using DataFrame.insert() to add a column 
df.insert(2, "Age", [21, 23, 24, 21], True) 

# Observe the result 
df 

# Define a dictionary containing Students data 
data = {'Name': ['Jai', 'Princi', 'Gaurav', 'Anuj'],  'Height': [5.1, 6.2, 5.1, 5.2],  'Qualification': ['Msc', 'MA', 'Msc', 'Msc']} 

# Convert the dictionary into DataFrame 
df = pd.DataFrame(data) 

# Using 'Address' as the column name and equating it to the list 
# df2 = df.assign(temp_f=df['temp_c'] * 9 / 5 + 32)
# df2 = df.assign(temp_f=lambda x: x['temp_c'] * 9 / 5 + 32,temp_k=lambda x: (x['temp_f'] +  459.67) * 5 / 9)
df2 = df.assign(address = ['Delhi', 'Bangalore', 'Chennai', 'Patna']) 

# Observe the result 
df2 

# ----------新增行---------------
# 重要!!先创建一个DataFrame,用来增加进数据框的最后一行
>>> new=pd.DataFrame({'name':'lisa','gender':'F','city':'北京','age':19,'score':100},index=[1])   # 自定义索引为:1 ,这里也可以不设置index
>>> new
   age city gender  name  score
1   19   北京      F  lisa    100

# 没测试通过
# ignore_index=True,表示不按原来的索引,从0开始自动递增
#  df = pd.DataFrame({'A': 1, 'B': 2},ignore_index=True)
# Traceback (most recent call last):
#   File "<stdin>", line 1, in <module>
# TypeError: __init__() got an unexpected keyword argument 'ignore_index'

  新增行时,需要指定index或者使用列表

参考文章

1、https://www.cnblogs.com/yu121/p/12970262.html

2、https://amberwest.github.io/2019/02/26/%E5%9C%A8%E5%B7%B2%E6%9C%89%E7%9A%84DataFrame%E4%B8%8A%E5%A2%9E%E5%8A%A0%E6%96%B0%E5%88%97/


注意:本文归作者所有,未经作者允许,不得转载

全部评论: 0

    我有话说: