DataFrame操作大全(持续更新)

备注:下文无说明时,默认df为DataFrame格式的变量


1. 新建

方法1: 字典创建(如果不指定columns,则表头会自动排序)

from pandas import DataFrame

head = ['sex', 'age', 'name']
data = {
        'name':['zs','ls','ww'],
        'age':[10,20,30],
        'sex':['m','w','m']
        }
df1 = DataFrame(data) #表头自动排序
df2 = DataFrame(data,columns=head) #固定表头

df1:   

age name sex
0   10   zs   m
1   20   ls   w
2   30   ww   m

df2:

  sex  age name
0   m   10   zs
1   w   20   ls
2   m   30   ww

方法2:数组创建

import numpy as np
import pandas as pd
ar = np.random.rand(9).reshape(3,3)
df1 = pd.DataFrame(ar)
print(df1)
df2 = pd.DataFrame(ar, index = ["a","b","c"], columns = ["one", "two", "three"])
print(df2)

          0         1         2
0  0.646752  0.405649  0.717825
1  0.202191  0.907458  0.590119
2  0.347748  0.999144  0.329197
        one       two     three
a  0.646752  0.405649  0.717825
b  0.202191  0.907458  0.590119
c  0.347748  0.999144  0.329197

更详细的:https://blog.csdn.net/u010199356/article/details/85697860


2. CSV文件读写

写CSV文件:

df.to_csv(file_name) #默认增加一列0~n的index标号
df.to_csv(file_name,index = False) #不带默认的index标号

读CSV文件:

df = pd.read_csv(file_name) #如果内容是数字,可能默认读成numpy类型
df = pd.read_csv(file_name, dtype=str) #如果内容是数字,可能默认读成numpy类型

 


3. 修改

3.1 排序

3.1.1按行翻转

df = df[::-1]

3.1.2 按特定列排序

df.sort_values(by='day')

3.1.3 按给定的列名重排序

    import pandas as pd
    head = ['b','a','c']
    data = {
            'c':[7,8,9],
            'b':[4,5,6],
            'a':[1,2,3]
            }
    df1 = pd.DataFrame(data) #表头自动排序
    print(df1)
    df2 = df1.reindex(columns=head) #按规定的head重排序
    print(df2)

df1:
   a  b  c
0  1  4  7
1  2  5  8
2  3  6  9
df2:
   b  a  c
0  4  1  7
1  5  2  8
2  6  3  9

参考链接:https://www.cnblogs.com/feigebaqi/p/9800496.html

3.2 改写

3.2.1 改写column

方法1:

>>>a.columns = ['a','b','c']
>>>a
   a  b  c
0  1  4  7
1  2  5  8
2  3  6  9

方法二:

>>>a.rename(columns={'A':'a', 'B':'b', 'C':'c'}, inplace = True)
>>>a
   a  b  c
0  1  4  7
1  2  5  8
2  3  6  9

3.2.2 改写index

df.index = pd.Index(range(len(df))) #将乱序的df的index重新设置为[0,1]  

3.2.3 增加

 

3.2.4 删除

删除一行

df = df.drop[index]

3.2.5 去重

interest_column = ['c1','c2']
df= df.drop_duplicates(subset=interest_column ,keep='last')

如果interest_column的值相同,则保留后面一条记录,keep='first'则保留前面一条记录

4.元素索引

4.1 索引单个元素

方法1: df.iloc[1][3]  #类似于二维数组索引

方法2: df.iloc[1,2]

方法3:df.loc['行名','列名']  #根据名字获取索引值

4.2 索引行

df.head() #索引前5行数据

df.head(3) #索引前三行

获取表头名称: df.columns  / df.columns.tolist()

获取行列数:df.shape

df.loc[n] #索引低n行

4.3 索引列

方法1: df['name'] #第name列

方法2: df.loc[:,'name'] #第name列

方法3: df.iloc[:,1] #第2列

4.4 索引满足特定条件的记录

    data = {
            'name':['zs','ls','ww','lmz'],
            'age':[16,23,11,40],
            'sex':[0,1,1,1]
            }
    df = pd.DataFrame(data)
    record1 = df[df.age < 20] #单个条件筛选
    record2 = df[(df.age < 20) & (df.sex == 1)] #多条件筛选
    print(df)
    print(record1)
    print(record2)

参考链接:https://www.jianshu.com/p/a6139a1352d6


5. 运算

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yinchao163

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值