Pandas常用操作汇总(整理自用)

目录

1. List转DataFrame

2. 计算相关系数

3. index重新排序

4. 两个DataFrame根据某一列的值合并(列增多)

5. DataFrame A列值相同,B列值相加/平均

6. 列名相同的DataFrame竖着合并(行增多)

7. DataFrame按A列的值排序

8. DataFrame多条件查询

9. 查看DataFrame各列的数据类型

10. 查看A列缺失值的行

11. DataFrame根据A列去重

12. 按条件替换某一列中的值

13. DataFrame增加一列

14. DataFrame删除A、B列

15. DataFrame根据index删除行

16. Counter转DataFrame

17. 删除某列

18. 根据行索引定位多行

19. 将指定列作为索引

20. 删除某列为空的行

21.修改DataFrame某一列的数据类型

22. DataFrame转字典

23. 对某一列的值进行某一个相同操作

24. 对DataFrame的某一列进行某种操作

25. 字典转DataFrame

26. 筛选出某列值在某个范围的行

27. 读数据,第一列作为行号

28. 从指定行开始读数据

29. DataFrame计算某列相邻两个元素的差值

30. 合并两列,中间用逗号分隔

31. 只读前n行

32. 第一列作为索引

33.提取前n列/最后一列

34. 新增一列B,B是A列的累计和

35. 对DataFrame根据A列去重,同时要有限B列最小的行

36. 字符串日期转为日期数据类型

其他:


1. List转DataFrame

#  result是二维列表[[a,1],[b,2],[c,3]]
data = pd.DataFrame(result)
data.columns = ['A', 'B']
data

2. 计算相关系数

corr = round(data['A'].corr(data['B']), 4)

3. index重新排序

projects = projects.reset_index(drop=True)

4. 两个DataFrame根据某一列的值合并(列增多)

# 删掉缺失值
data = pd.merge(data1, data2, on='A')
# 缺失值补NAN
data = pd.merge(data1, data2, on='A', how='outer')

5. DataFrame A列值相同,B列值相加/平均

supports = supports.groupby(by=['A'])['B'].sum()
supports = supports.groupby(by=['A'])['B'].mean()

6. 列名相同的DataFrame竖着合并(行增多)

data = pd.concat([data2,data1])

7. DataFrame按A列的值排序

test = test.sort_values(by="A" , ascending=False)

8. DataFrame多条件查询

wuhan.loc[(wuhan["A"]=='exp') & (wuhan["B"]==0), :]

9. 查看DataFrame各列的数据类型

projects.dtypes

10. 查看A列缺失值的行

queshi = data[data['A'].isnull().T]

11. DataFrame根据A列去重

projects = projects .drop_duplicates(['A'])

12. 按条件替换某一列中的值

data.loc[data['A']==0, ['B']] = 1

13. DataFrame增加一列

# gap_list 是数组
s = pd.Series(gap_list)
s.name = "A"
data= pd.concat([data,s], axis=1)
data

14. DataFrame删除A、B列

data= data.drop(columns=['A', 'B])

15. DataFrame根据index删除行

data = data.drop(index=[0, 1])

16. Counter转DataFrame

df = DataFrame(counter.items(), columns=['cnt1', 'cnt2'])

17. 删除某列

df_test = test1.drop(['Unnamed: 0'], axis=1)

18. 根据行索引定位多行

poor.loc[[29, 30]]

19. 将指定列作为索引

poor.set_index(['Country_id'], inplace=True)

20. 删除某列为空的行

temp = temp.dropna(subset=['FINISH_TIME'])

21.修改DataFrame某一列的数据类型

temp['FINISH_TIME'] = pd.to_datetime(temp['FINISH_TIME'], format = '%Y%m%d')
support['love_point'] = support['love_point'].astype(object)
df['a'] = pd.to_numeric(df['a'])

22. DataFrame转字典

# projects是两列的DataFrame,转成的字典把第一列当作Key,第二列当作value
projects = dict(zip(list(projects['A']),list(projects['B'])))

23. 对某一列的值进行某一个相同操作

import time
def get_time(timeStamp):
    return time.strftime("%Y-%m-%d", time.localtime(timeStamp))

support['time']= support.apply(lambda x:get_time(x['time']),axis=1)

24. 对DataFrame的某一列进行某种操作

# 让A列的每个元素都加一,处理后的列赋值给B列
df['B'] = df['A'].apply(lambda x : x+1) 

25. 字典转DataFrame

pd.DataFrame.from_dict(pagerank, orient='index').reset_index()

26. 筛选出某列值在某个范围的行

# citys是一个可迭代对象
df.loc[df['A'].isin(citys)]

27. 读数据,第一列作为行号

distance = pd.read_csv('./data/城市之间的距离.csv', index_col=0)

28. 从指定行开始读数据

data = pd.read_excel('./data.xlsx', header=6)

29. DataFrame计算某列相邻两个元素的差值

df['sep'] = df['minutes'].diff()

30. 合并两列,中间用逗号分隔

list(df["lat"].map(str) + "," + df["lon"].map(str))

31. 只读前n行

inflow = pd.read_csv('res/inflow.csv', nrows=10)

32. 第一列作为索引

inflow = pd.read_csv('res/inflow.csv', index_col=0)

33.提取前n列/最后一列

# 前n列
data.iloc[:,:n]
# 最后一列
data.iloc[:,-1]

34. 新增一列B,B是A列的累计和

df['B'] = pd.Series(np.cumsum(df['A']))

35. 对DataFrame根据A列去重,同时要有限B列最小的行

# 方法1
data.loc[data.groupby('A')['B'].idxmin()]
# 方法2
data.sort_values(by='B').groupby('A', as_index=False).first()

36. 字符串日期转为日期数据类型

pd.to_datetime(df['date'])

其他:

# 13位时间戳转时间
import time
time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(timeStamp))

# 时间字符转时间类型
test = '2019-10-10 23:40:00'
timeArray = time.strptime(test, "%Y-%m-%d %H:%M:%S")

# 更改时间字符的显示格式
test = '2019-10-10 23:40:00'
timeArray = time.strptime(test, "%Y-%m-%d %H:%M:%S")
otherStyleTime = time.strftime("%Y/%m/%d %H", timeArray)

# 时间字符转时间戳
int(time.mktime(time.strptime('2013-10-10 23:40:00', "%Y-%m-%d %H:%M:%S")))

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值