学习笔记-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
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
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的一个错误#
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
两个修改方法
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
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
种一棵树最好的时间是十年前,其次是现在。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?