学习笔记-Pandas Numpy

Numpy

nanmean方法#

np.nan == np.nan#

会返回False

pandas的空值#

有两个df, df1
merge left想要加入df1的唯一的一个不属于df的字段, 之后, df1部分的空值好像是float NaN
哦上面这个应该是array_join之后返回的是str, 还不是下面说的这种None然后拼接
但是sql查询出来的空, 转成pandas里面好像是NoneType

Copy
df1 = read_sql(""" select * from ( select '2' c ) a""") df2 = read_sql(""" select * from ( select '1' c, '2' d ) a""") result = pd.merge(df1, df2, on=['c'], how='left') print(result) # 输出 # c d # 0 2 NaN
Copy
df1 = read_sql(""" select * from ( select 1 c ) a left join ( select 2 cc ) b on a.c = b.cc""") print(df1) # 输出 # c cc # 0 1 None

pandas除以0的一个错误#

Copy
dif = df.apply(lambda x: (x['sale_price'] - x['回收公允价']) / x['回收公允价'] if x['是否首日定价'] == '否' and x['回收公允价'] != 0 else np.nan, axis=1).map(lambda x: '{:.3f}'.format(x)) 上面会报错, 但是下面不会报错 data = {'A': [1, 2, 3, 4], 'B': [1, 2, 0, 0]} df = pd.DataFrame(data) df['C'] = df['A'] / df['B'] df['C'] = df.apply(lambda x: x['A'] / x['B'], axis=1)

trasform的一个bug#

用tolist函数时候,只会返回一个值
https://stackoverflow.com/questions/62458837/groupby-transform-to-list-in-pandas-does-not-work
两个修改方法

Copy
df['Price_List'] = df.groupby('Category')['Price'].transform(lambda x : [x.tolist()]*len(x)) df['Price_List'] = df['Category'].map(df.groupby('Category')['Price'].agg(list))

注意
DataFrame' object has no attribute 'map'
所以用多列聚合的时候, 第二个方法好像没用

panda的merge#

how='left'的时候, 右边不存在的值的数据格式和左边一样, 如果左边是float, 右边不存在的时候就是NaN, 但是其他匹配到的地方的数据格式就是匹配到的数据格式, 后续的操作要注意判断一下

df.groupby + agg#

这个函数返回的df打印出来全部列都有, 但是columns里面只有聚合的列

reset_index() 用这个 重置一下

两个一行的df, concat(axis=1)变成了2行 原因是index不一样#

可能是index类型不一样, 一个int, 一个rangeindex
https://blog.csdn.net/ninenins/article/details/120305648

对于上面的,即使使用了ignore_index 横向拼接还是会有问题, 因为ignore是拼完之后再忽略
https://segmentfault.com/a/1190000015370825

Copy
import pandas as pd df1 = pd.DataFrame({'A': [1]}, index=['row1']) df2 = pd.DataFrame({'B': [2]}, index=['row2']) # 使用concat()函数将DataFrame合并为一行并忽略索引 merged_df = pd.concat([df1, df2], ignore_index=True, axis=1) print(merged_df) 0 1 row1 1.0 NaN row2 NaN 2.0
posted @   种树人  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示
CONTENTS