pandas【常用】读写增删查改

数据分析与应用(python)1----pandas统计分析基础 CSV是一种用分隔符分隔的文件格式,因为其分隔符不一定是逗号,所以又被称为字符分隔文件。文本文件以纯文本形式存储表格数据(数字和文本),它是一种通用、相对简单的文件格式,最广泛的应用是在程序之间转移表格数据,而这些程序本身是在不兼容的格式上进行操作的(往往是私有的、无规范的格式)。,是由一组数据(各种NumPy数据类型)以及一组与之相关的数据标签(即索引)组成,而仅由一组数据也可产生简单的Series对象。,包含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型等),表示将某行数据作为列名。 阅读详情

import pandas as pd
df = pd.DataFrame({'A': ['aaa', 'bb', 'c'],
                   'B': [10000, 2000, 300],
                   'C': [0.001, 0.02, 0.3]})
print(df)

读文件

读csv

  • header=None设置首行不变成header
  • names设置列名字
def csv2df(fname, names=None):
    return pd.read_csv(fname, names=names, header=None)

读txt

  • sep设置分隔符,jieba词典分隔符是空格
def txt2df(fname, sep=' ', names=None):
    return pd.read_table(fname, sep, names=names, header=None)
  • delimiter设置分隔符
np.loadtxt(fname, dtype=float, delimiter=None)

读excel

def xlsx2df(fname, sheet_name=0):
    return pd.read_excel(fname, sheet_name=sheet_name)

读数据库

read_sql_query

import pandas as pd, pymysql
def db_to_csv(db_name, query, file):
    db = pymysql.connect('localhost', 'root', 'password', charset='utf8', db=db_name)
    df =pd.read_sql_query(query, db)
    df.to_csv(file, index=False)
db_to_csv('库名', 'SELECT * FROM 表;', '文件名.csv')

写文件

写csv

df.to_csv(fname, index=False)

写excel

  • 单个sheet
df.to_excel(fname, index=False)
  • 多个sheet
def df2sheets(ls_of_df, sheet_names, fname='temporary'):
    fname = fname.replace('.xlsx', '') + '.xlsx'
    excel_writer = pd.ExcelWriter(fname)
    for df, sheet_name in zip(ls_of_df, sheet_names):
        df.to_excel(excel_writer, sheet_name, index=False)
    excel_writer.save()

对象类型转换

dict→DataFrame

dt = {'A': ['a', 'b', 'c'],
      'B': [100, 200, 300]}
print(pd.DataFrame(dt))

ndarray→DataFrame

  • 嵌套列表或numpy.ndarray均可
ls_of_ls = [['a', 100],
            ['b', 200],
            ['c', 300]]
print(pd.DataFrame(ls_of_ls, columns=['A', 'B']))

DataFrame→dict

def df2dt(df):
    if df.shape[1] == 2:
        return dict(df.values)
    elif df.shape[1] > 2:
        return {i[0]: i[1:] for i in df.values}

DataFrame→ndarray

print(df.values, type(df.values))

DataFrame→Series

print(df.A, type(df.A))  # A列
print(df[df.columns[0]])  # 第0列
# print(df.loc[2])  # index=2的行
# print(df.iloc[2])  # 第2+1行

查

列筛选

print(df[['A', 'C']])
print(df[df.columns[0:2]])  # 第0~1列

行筛选

print(df[df['B'] > 300])
print(df[(df['B'] > 300) & (df['C'] > 0.01)])
print(df[df['A'].isin(['bb', 'c'])])

定位

print(df.loc[df['A'] == 'c', ['B']])
print(df.loc[df['A'].isin(['bb', 'c']), ('A', 'C')])

增

列新增

df['len'] = df.A.str.len()  # 尾列,列名‘len’,值为A列字符串长度
df.insert(0, 'D', 99)  # 第0列,列名‘D’,值99
print(df)

行新增

pandas.concat

df1 = pd.DataFrame({'A': ['d'], 'B': [400], 'C': [0.4]})
df = pd.concat([df, df1])
print(df)

删

函数作用
drop普通删除
drop_duplicates去重
dropna丢弃缺失值

改

df.loc[df['A'] == 'c', ['A', 'C']] = ('cc', 33)
print(df)

排序

按age列降序

df.sort_values(by='age', ascending=False, inplace=True)
pandas数据骚操作总结 pandas在工作中的使用总结,以及使用pandas进行特征工程比较常用的方法总结。 立即下载

相关推荐

使用freesurfer和3Dslicer进行脑区分割和电极定点(详细版)

1、安装好matlab和freesurfer2、在目标位置创建文件夹3、开放权限4、将需要计算的nii文件放入文件夹。

zQIANYUN的博客 5636

【数据分析---Pandas实战指南:精通数据查询、增删改操作与高效索引和列名操作管理】

【数据分析---Pandas实战指南:精通数据查询、增删改操作与高效索引和列名操作管理】s对象或df对象如何执行自定函数?-> 借助apply方s/df.apply(func=,axis=,args=)func: 自定义函数名axis: df中按行(1)或按列(0,默认的)执行args: 自定义函数带其他有参数时, 需要通args传参s对象的apply方法s对象的apply方法自定义函数中的第一个参数值是s对象的每一个值自定义函数返回值为一个值apply_dfif x=='天通苑租房':

书生的技术分享 1433

Rider高效调试UE引擎:无需编译源码的符号配置指南

本文提供了一份详尽的Rider高效调试UE引擎指南,核心在于无需编译源码即可配置调试符号。通过Epic启动器下载官方PDB文件,并在Rider中正确配置外部符号服务器路径,开发者能在10分钟内实现对引擎内部代码(如AActor::Tick)的源码级断点调试、变量查看和调用堆栈分析,极大提升问题排查效率。

weixin_29011239的博客 343

pandas增删改查

new_row={'列名':数据}结果:A B C0 1 2 3。

weixin_73981368的博客 2344

焦距与视差的关系及其对深度估计的影响

焦距在立体视觉中的作用至关重要,它直接影响视差的大小,从而影响深度估计的精度。焦距越长,视差差异越大,物体的深度估计就越精确。这一关系使得焦距长的相机在一些需要高精度深度估计的应用场景中更加优越。了解焦距与视差的关系,对于优化相机配置和提升深度估计精度具有重要意义。在实践中,选择合适的焦距对于获得精确的深度信息至关重要,特别是在自动驾驶、虚拟现实、三维重建等领域,精确的深度估计能够提供更好的用户体验和技术支持。

计算机科学与技术专业学生的成长之路 1674

通过声音识别鸟类

根据野生鸟类的外表来识别它是一回事。仅仅根据声音来识别同一只鸟是另一回事。除非你是一个熟练的观鸟者,通过声音识别鸟类可能相当具有挑战性德国马尔堡大学的一组数学、计算机科学和生物学研究人员设计了一种快速识别鸟类和监测当地生物多样性的方法。他们使用连接到 NVIDIA 的便携式设备拍摄的录音根据研究人员的说法是一个边缘人工智能系统,“基于分布式系统中运行的嵌入式边缘设备,能够对森林中记录的声景进行高效、连续的评估。”要了解更多信息,请参阅。

分享AI前沿科技 1680

pandas的增删查改

pandas是为了解决数据分析任务而生的。pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法,能很好的帮助我们分析爬取到的数据。环境准备pandas、numpy本篇所有代码都运行在jupyter上目录1、增加数据2、删除数据3、查询数据4、修改数据准备工作先生成两个数据集data = {'city': ...

weixin_44623587的博客 1059

PostgreSQL:详解如何搭建流复制集群

PostgreSQL流复制集群搭建指南摘要 本文详细介绍了PostgreSQL流复制集群的部署流程。流复制通过主节点实时传输WAL日志到备节点实现数据同步,支持高可用和读写分离。部署步骤包括:1)准备相同版本的主备节点环境;2)配置主节点的postgresql.conf和pg_hba.conf;3)创建专用复制用户;4)使用pg_basebackup初始化备库;5)验证复制状态。文章还涵盖复制槽、同步复制等高级配置,以及故障切换方法。该方案可实现数据实时同步,备库提供只读查询服务,是构建高可用Postgre

数据知道的博客 2573

pandas统计数据分析基础——对DataFrame数据的查、改、增、删及分析DataFrame数据

一、查看DataFrame数据目录前言一、查看DataFrame数据1. 使用字典访问内部数据2.按索引查询3.条件查询二.数据的修改1.直接修改值2. 批量修改三、数据的增加1.增加列2.增加行四、数据的删除1.删除列2.删除行五、总结。

x123456_1102444的博客 1151

如何让C++程序生成dump文件?生成dump文件的方式有哪些?如何使用Windbg分析dump文件?

本文详细介绍了如何让C++程序生成dump文件、生成dump文件的多种方式以及如何使用Windbg分析dump文件,并给出了对应的实战分析案例,有一定的实战参考价值。

dvlinker的技术专栏 5万+

Week 9 10 Neural Networks

Week 9 10 Neural Networks

金州饿霸吃不饱的博客 404

pandas对CSV文件数据操作增删改查

1、这是要处理的CSV文件labels3.csv   2、读取CSV文件(文件和labels3.csv文件在同一目录下) import pandas as pd import numpy as np import matplotlib.pyplot as plt label = pd.read_csv('labels3.csv') 3、选取特定行class_id为3 #选择特定...

luguanyou的博客 1万+

【Claude Code 源码解析教程】第25章:测试与调试

Claude Code 作为复杂的 AI 编程助手,测试与调试是保证质量的关键环节。项目建立了完善的测试体系,包括单元测试、集成测试、端到端测试等多个层次,同时提供了丰富的调试工具和技巧。

rengang66的博客 213

pandas

压缩模式可以是以下任何可能的值:{ ’ infer ‘,’ gzip ‘,’ bz2 ‘,’ zip ‘,’ xz ‘,’ None}。io参数可以接受的有:str,Excel文件,xlrd.Book,路径对象或类似文件的对象,其中最常用的是str,一般是文件路径+文件名,需要注意的是文件名字不要漏掉后缀,即文件扩展名,表明文件类型的那个!如果使用infer参数,则使用 gzip, bz2, zip或者解压文件名中以‘.gz’, ‘.bz2’, ‘.zip’, or ‘xz’这些为后缀的文件,否则不解压。

qq_47332253的博客 634

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Pandas例子从0到100

点击上方“机器学习与生成对抗网络”,关注"星标"获取有趣、好玩的前沿干货!来源:51CTO博客作者:youerning编辑:小詹学Python一、数据对象pandas主要...

idol24的博客 979

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Pandas复习笔记

这一阶段学习了 Pandas 的结构化数据处理与 Matplotlib 的可视化能力,掌握了:🧩 数据结构:Series、DataFrame 的创建与访问🔧 数据操作:增删查改、排序、合并、分组、空值处理📊 数据可视化:图表绘制、数据图形化展示📁 文件读写:CSV 文件读取与保存。

2301_77159812的博客 1844

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Python Pandas数据结构

pandas的数据结构有两大核心:Series和DataFrame。Series:是一维数组和Numpy中一维数组类似,这两种一维数组均与Python中的基本数据结构List相近。Series可以保存多种数据类型的数据:字符串、数字、布尔值等等。Dataframe:是一种二维表格形式的数据结构,类似于excel。data['w'] #选择表格中的'w'列,使用类字典属性,返回的是Series类型data.w #选择表格中的'w'列,使用点属性,返回的是Series类型data[['w']] #选择表格中的'

fightingtingting的博客 1247

python基于pandas实现Mysql增删查改

""" MySQL的用户:root, 密码:123456, 端口:3306,数据库:test"""# 将新建的DataFrame储存为MySQL中的数据表,不储存index列。# 先删除要新增的数据。无表时自动建表,表存在就追加。依据sql语句读出数据。"""导入必要模块"""

a9_A_Nine的博客 1311

10000 字 Pandas 基础+进阶笔记

数据对象pandas主要有两种数据对象:Series、DataFrame注:后面代码使用pandas版本0.20.1,通过import pandas as pd引入1. SeriesSe...

Python小二 1280

Pandas进阶学习指南

作者:youerning 来源:51CTO博客 一、数据对象 pandas主要有两种数据对象:Series、DataFrame 注: 后面代码使用pandas版本0.20.1,通过import pandas as pd引入 1. Series Series是一种带有索引的序列对象。 简单创建如下: # 通过传入一个序列给pd.Series初始化一个Series对象, 比如list s1=pd.Series(list("1234")) print(s1) 0 1 1 2 2 3 3 .

weixin_42709563的博客 702

Pandas

dataframe对象的转置要指定数据的操作格式,以及是不是多行操作对文件进行读操作对文件进行写操作就会按照一行写入指定多行,按照多行写入。

m0_74039531的博客 167

pandas的常规操作(一)

import pandas as pd ########## 一、文件读取 ######## ### 1.文本文件 # csv:文本文件分割符,默认分割符为‘,’;sep是改变文本分割符的;如果赋值错误,则会连在一片 order =pd.read_table(r'文件名.csv',encoding='gbk',sep=',') ## read_table:可以读任何文本文件;;encoding:编...

weixin_44200546的博客 440

pandas数据处理基础

知识与例子 opencv 是什么:计算机视觉开源库,主要算法涉及图像处理和机器学习相关方法。 图像分割就是把图像分成若干个特定的、具有独特性质的区域并提出感兴趣目标的技术和过程。 ...

weixin_43236350的博客 1250

pythonLibs(6) - Pandas

Pandas 简易教程1.Pandas简介2.dataframe数据访问2.1 获取一列--列标签2.2 获取多列--列标签列表2.3 获取一行--行标签2.4 获取多行--行切片操作2.5 index 获取行列信息--df.iloc()2.6 获取一个元素2.7 布尔值选择数据3.dataframe删除操作3.1 DataFrame.drop()3.2 删除一列--del,pop4.dataframe 合并追加操作4.1 追加一行4.2 追加一列4.3 合并操作-- pd.concat()5.datafr

sinat_40624829的博客 1477

Pandas进阶大神!从0到100你只差这篇文章!

点击上方“小白学视觉”,选择加"星标"或“置顶” 重磅干货,第一时间送达数据对象pandas主要有两种数据对象:Series、DataFrame注:后面代码使用pandas版本0.20.1,通过import pandas as pd引入1. SeriesSeries是一种带有索引的序列对象。简单创建如下:# 通过传入一个序列给pd.Series初始化一个Series对象, 比如list s1=p...

小白学视觉 208

Pandas基础+进阶10000字笔记!

↑关注 + 置顶 ~ 别错过小z的干货内容数据对象pandas主要有两种数据对象:Series、DataFrame注:后面代码使用pandas版本0.20.1,通过import p...

SeizeeveryDay的博客 548
上一篇: Python【jieba】词性标注表
下一篇: gensim词向量Word2Vec
小基基o_O
博客等级 码龄9年 4414粉丝 467原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

小基基o_O

您的鼓励是我创作的巨大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值