精华内容
下载资源
问答
  • 当列名是中文时,你引用该名字会报错。 df.姓名#报error!! df.name #没有error 所以需要使用 selectExpr改名 df = spark.read.csv("./ex.csv").selectExpr("姓名 as name") df.name #不报错 ref:...

    当列名是中文时,你引用该列的名字会报错。

    df.姓名 #报error!!
    df.name #没有error

    所以需要使用 selectExpr改名

    df = spark.read.csv("./ex.csv").selectExpr("姓名 as name")
    
    df.name  #不报错

    ref:https://stackoverflow.com/questions/34077353/how-to-change-dataframe-column-names-in-pyspark 

    展开全文
  • 这几天遇到比较多的dataframe操作,频繁使用,在此整理记录下,方便查找.1.num为的数字序号,name=df.columns[num],返回的是column的字符串名字,df[name]=df[df.columns[num]]=df['xxx']2.关于panda中dataframe的与&...

    这几天遇到比较多的dataframe操作,频繁使用,在此整理记录下,方便查找.

    1.num为列的数字序号,name=df.columns[num],返回的是column的字符串名字,df[name]=df[df.columns[num]]=df['xxx']

    2.关于panda中dataframe的与&运算,详情见我的博客,链接:https://www.cnblogs.com/Rvin/p/9504341.html
      df_am = df[ np.array(df['MDTime']>=93000000) & np.array(df['MDTime']<113000000) ]
     
    3.to_numeric适用于series,对字符串进行数字格式化, errors='coerce',忽略不能转化的格式,例如
      格式化之前为S[2]='123',格式化结果为S[2]=123
      for i in range(df.shape[1]):
          df[df.columns[i]] = pd.to_numeric(df[df.columns[i]], errors='coerce')

    4.drop方法及dropna方法
      df.drop([0], inplace=True)  # 删除列
      df.drop(df.columns[0], axis=1, inplace=True) # 删除列
      df.dropna(how='all',inplace=True, thresh=None)    # 这个是dropna的用法,how可选
          any-有一个na就符合条件,
          all--全部为na才符合条件,
          thresh参数(和how同级),thresh=5,大于5个符合条件
          inplace=True,替换原来的,不需要返回值了  

    5.isin方法
      df[~df.isin([np.nan, np.inf, -np.inf]).any(1)]
      isin([np.nan, np.inf, -np.inf])返回整个df的每个元素(元素是np.nan, np.inf, -np.inf,则返回True)True or False
      ~取反,因为我需要的是留住那些不是np.nan, np.inf, -np.inf的值,df[True]的元素还是返回原来的值,False的返回为nan,然后用fillna填充即可
     
    6.json,想要json.loads,字符串的必须是"双引号,单引号无法加载
      str=re.sub('\'', '\"', str)

    7.df的列改名,这样可以改对应的多个,index相同
      df.rename(columns={'时间':'MDTime','成交量':'PreVolume'})
      这样是从第一列重新命名,index相同
      df.columns = [list('abcd')]
     
    8.转化df格式的问题
      我的stackoverflow的问题:https://stackoverflow.com/questions/52033359/transform-a-large-dataframe-takes-too-long/52033393?noredirect=1#comment91017865_52033393
      df = pd.pivot(df.index, df['stock_code'], df['price'])
      pivot,第一个参数为新df的index,第二个为新的columns,第三个为values
     

    转载于:https://www.cnblogs.com/Rvin/p/9605389.html

    展开全文
  • pandas.DataFrame.rename 使用函数: DataFrame.rename(mapper=None, index=None, columns=None, axis=None, copy=True, inplace=False, level=None) 功能:更改轴标签 ...出的额外标签不会引...

    pandas.DataFrame.rename

    使用函数: DataFrame.rename(mapper=Noneindex=Nonecolumns=Noneaxis=Nonecopy=Trueinplace=Falselevel=None)

    功能:更改轴标签

    函数字典值必须是唯一的(1对1)。未包含在 字典/Series  中的标签将保留原样。列出的额外标签不会引发错误。

     

    参数:

    mapper, index, columns : dict-like or function, optional

    dict-like or functions transformations to apply to that axis’ values. Use either mapperand axis to specify the axis to target with mapper, or index and columns.

    dict-like 或函数转换以应用于该轴的值。二者必选其一mapper,并使用axis指定轴与目标mapper,或index和 columns

    主要用于指定需要修改的地方:index or columns 

    axis : int or str, optional

    Axis to target with mapper. Can be either the axis name (‘index’, ‘columns’) or number (0, 1). The default is ‘index’.

    轴与目标mapper。可以是轴名称('index','columns')或数字(0,1)。默认为'index'。

    copy : boolean, default True

    Also copy underlying data

    还复制基础数据

    inplace : boolean, default False

    Whether to return a new DataFrame. If True then value of copy is ignored.

    是否返回新的DataFrame。如果为True,则忽略复制值。

    level : int or level name, default None

    In case of a MultiIndex, only rename labels in the specified level.

    如果是MultiIndex,只重命名指定级别的标签。

    返回:

    renamed : DataFrame

     

    例子

    DataFrame.rename 支持两种调用约定

    • (index=index_mapper, columns=columns_mapper, ...)
    • (mapper, axis={'index', 'columns'}, ...)

    我们强烈建议您使用关键字参数来阐明您的意图。

    >>> df = pd.DataFrame({"A": [1, 2, 3], "B": [4, 5, 6]})
    >>> df.rename(index=str, columns={"A": "a", "B": "c"})
       a  c
    0  1  4
    1  2  5
    2  3  6
    >>> df.rename(index=str, columns={"A": "a", "C": "c"})
       a  B
    0  1  4
    1  2  5
    2  3  6
    
    
    #使用轴样式参数
    
    >>> df.rename(str.lower, axis='columns')
       a  b
    0  1  4
    1  2  5
    2  3  6
    >>> df.rename({1: 2, 2: 4}, axis='index')
       A  B
    0  1  4
    2  2  5
    4  3  6

     

     

    展开全文
  • spark DF写入csv/text

    2021-05-11 21:39:34
    DF写入TEXT,要求DF只有一,且类型为String 修改DataFrame类型的方法可以参考 1 直接按列名修改 scala> a.select(a.col("id"),a.col("username"),a.col("birthday").cast("string").as("bir")).show 2 ...

    Spark的DataFrame调用write方法写入数据时有以下几点注意

    • DF写入CSV,要求每一列的类型为String
    • DF写入TEXT,要求DF只有一列,且类型为String

    修改DataFrame列类型的方法可以参考

    1 直接按列名修改

    scala> a.select(a.col("id"),a.col("username"),a.col("birthday").cast("string").as("bir")).show
    

    2 遍历DF的所有列依次修改,适用于修改成统一的类型

    import org.apache.spark.sql.DataFrame
    import org.apache.spark.sql.functions.col
    val df: DataFrame = ...
    val columns: Array[String] = df.columns
    val df2: DataFrame = columns.foldLeft(df){
        (currentDF, column) => currentDF.withColumn(column, col(column).cast("string"))
    }
    

    3 先修改列的类型,再用select函数查找

    scala 有array:_*这样传参这种语法,就是就是把Array数组的参数转化成变长序列传入,而df的select方法也支持col*这样的变长序列。

    这样看来,SELECT的COL只需要名字一样,struct可以任意指定,也就是说DF按名查找,再按COL的struct处理数据

    val cols = colNames.map(f => col(f).cast(DoubleType))
    df.select(cols: _*).show()
    

    再写基于DF的ALS推荐算法时,遇到了DF的存储问题,解决代码如下

      def main(args: Array[String]): Unit = {
        //初始化
        val sparkConf = new SparkConf().setMaster(config("spark.cores")).setAppName("OfflineRecommonder")
        val spark = SparkSession.builder().config(sparkConf).getOrCreate()
    
        import spark.implicits._
    
        implicit val mongoConf = MongoConfig(config("mongo.uri"), config("mongo.db"))
    
    
        val ratingDS = spark.read
          .option("uri", mongoConf.uri)
          .option("collection", MONGODB_RATING_COLLECTION)
          .format("com.mongodb.spark.sql")
          .load()
          .select($"userId",$"productId",$"score" as("rating"),$"timestamp")
          .as[ProductRating]
    
        val Array(training,test) = ratingDS.randomSplit(Array(0.8,0.2))
        val als = new ALS()
          .setMaxIter(5)
          .setRegParam(0.01)
          .setRank(5)
          .setUserCol("userId")
          .setItemCol("productId")
          .setRatingCol("rating")
        val model = als.fit(training)
    
        // Evaluate the model by computing the RMSE on the test data
        // Note we set cold start strategy to 'drop' to ensure we don't get NaN evaluation metrics
        model.setColdStartStrategy("drop")
        val predictions = model.transform(test)
    
        /**
         * DF写入CSV,要求每一列的类型为String
         * DF写入Text,要求DF只有一列,且类型为String
         *
         * 1.改写DF的列类型
         *
         * 2.写入csv
         * */
        predictions.columns.foldLeft(predictions){
          (currentDF,column)=>currentDF.withColumn(column, col(column).cast("string"))
        }.limit(10).coalesce(1)
          .write
          .mode(SaveMode.Overwrite)
          .option("header",true)
          .csv("ECommerceRecommendSystem/recs/predictions.csv")
    
        /**
         * DF写入CSV,要求每一列的类型为String
         * DF写入Text,要求DF只有一列,且类型为String
         * */
        val userRecs = model.recommendForAllUsers(10)
        val newCol = userRecs.columns.map(col(_).cast("string"))
        userRecs.select(newCol:_*).limit(10).coalesce(1)
          .write
          .mode(SaveMode.Overwrite)
          .option("header",true)
          .csv("ECommerceRecommendSystem/recs/userRecs.csv")
    
        //模型评估器RegressionEvaluator用于回归的评估器,主要是计算y与y^的插值
        val evaluator = new RegressionEvaluator()
          .setMetricName("rmse") //设置真实值与预测值误差的计算方式,RMSE 均方根误差 ---sqrt ( err(i)*eer(i) / n )
          .setLabelCol("rating")//真实值
          .setPredictionCol("prediction")//预测值
        val rmse = evaluator.evaluate(predictions)
        println(s"Root-mean-square error = $rmse")
    
    
        spark.stop()
      }
    展开全文
  • pandas.DataFrame.rename使用函数: DataFrame.rename(mapper=None, index=None, columns=None, axis=None, copy=True, inplace=False, level=None)功能:更改轴标签函数字典值...出的额外标签不会引发错误。参数...
  • df.du命令和磁盘分区

    2018-09-25 19:44:00
    第一分区名字,第二磁盘总大小,单位kb 第三已用 第四可用 第五已用百分比(关注) 最后就是挂载点。 df –h 根据磁盘大小显示单位(tmpfs临时文件系统,重启后会自动消失/dev/shm内存) free 查...
  • 主要介绍了Python pandas.DataFrame调整顺序及修改index名的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • pandas3--操作

    2020-02-23 20:47:48
    增加 df[列名]=值 删除 del df[要删除的列名] 会直接在原数据上修改 df.pop(要删除的列名) 直接会在原表上删除, 并会以Series返回被删除的...df.columns = 包含新列名的列表(修改全部名字df.r...
  • 1.修改列名字 把Dataframe格式的列名'class1'修改为'class_label' data.rename(columns={"label":"true_label"},inplace=True) data.head() 2.调整的顺序 df_train = df_train[['HappenTime','...
  • python重命名

    千次阅读 2019-05-21 14:05:06
    Python 重命名 重命名dataframe 中的列名 df.rename(columns={‘old_name’:‘new_name’}, inplace = True)
  • 第一是分区的名字第二列为分区总容量第三列为使用容量第四剩余容量第五列为使用百分比,如果达到90%就需要关注了最后一为挂载点 二:du命令 ● du用来查看某个目录或者文件所占用空间大小常用参数:-a:全部.....
  • 原博文2020-04-11 21:23 −使用Pandas读取excel数据如下:df_column = pd.read_excel("测试数据.xlsx",header=None)#取消默认第一行为列名print(df_column)# 自定义map函数def test_map(x): return (x+1)df_......
  • 使用df和du 可以很容易掌握磁盘和文件夹的大小查看和控制1. df 查看一级文件夹大小、使用比例、档案系统及其挂入点,但对文件却无能为力。2. du可以查看文件及文件夹的大小。两者配合使用,非常有效。比如用df查看...
  • pandas之df使用指南

    2020-03-18 14:53:03
    [1]代表第一行第二列), #或是一个方括号里前面是行数后面是列名([2,“C”]代表第三行的“C”列 df.iloc[1:10,2] = 111#将第二行到第十行的第二列改为111 #iloc精准定位,只接受数字 -增加 1.增加行 df.loc[7] = ...
  • 名称重命名 df.rename(columns={'hah':'typeBig','typeBig':'typeMedium','typeMedium':'typeSmall','typeSmall':'typeSmallPlus'}, inplace = True) :前面是原名称,后面是要为的新名字。 只用写需要改动的就...
  • pandas学习之df.rename()

    万次阅读 2020-06-17 14:58:33
    这3个参数作用类似,dataframe中有行和两个方向,在改名时,需要指明改名的是行还是(默认是行),使用df.rename(index = mapper)或者df.rename(columns=mapper)的形式,和df.rename(mapper,axis=0 or 1)的...
  • csv转dataframe格式如何去掉第一

    千次阅读 2020-03-01 19:54:58
    给第一列改名字之后,再存回csv就会多出一列。 df=pd.read_csv('data.csv',index_col=0) df.head(5) 把多的这一列作为索引就ok了。 方法二: 在存csv的时候就避免这个问题,不要加索引。 df.to_csv('data...
  • sql 添加,删除

    2017-03-30 13:55:30
    有默认值的添加:alter table Test add BazaarType char(1) default(0) 删除没有默认值的:alter table Test drop COLUMN BazaarType 删除有默认值的:先删除约束(默认值)alter table Te
  • linux命令之 df file fsck fuser

    千次阅读 2014-05-18 10:11:28
    如果是二进制文件,可以用dbx命令来调试或者试着执行它(注意它可能是一个具有破坏性的程序),知道文件或目录的作用之后,可以对其进行改名。 fuser命令 功能:识别出正在对某个文件或端口访问的进程...
  • Python dataframe更换名称

    万次阅读 2018-07-25 16:51:50
    方法1:使用pd.rename函数 a.rename(columns={'A'...2:将涉及的用字典括起来,’A’:’a’的意思是将原大A名称修改为小a 3,inplace指的是直接修改,不使用复制的方式,要是没有inplace这个参数,或者这个参...
  • 1.读取csv文件 data=pd.read_csv('data.csv',encoding = "utf-8",header = 0,names = range(0,50),index_col=...names = range(0,50))表示以[0…49]为索引的名字 index_col=0表示以原有数据的第一(索引为0)当作行索
  • >>> df.index = range(1,len(df) + 1) # 将index改成从1开始 >>> df user_id book_id rating mark_date 1 webbang 3713327 4 2017-03-07 2 webbang 4074636 4 2017-03-07 3 webbang 26873486 4 2017-03-07 ...
  • Python pandas 重命名索引和名称

    千次阅读 2021-03-16 18:24:56
    重命名名称2.重命名索引3.重置索引 df=pd.DataFrame(np.arange(16).reshape(4,4),columns=["one","two","three","four"],index=['a','b','c','d']) 1.重命名名称 df.rename(columns={"one":"nj","two":"bj"},...
  • df+series+reset_index+sort_values

    千次阅读 2018-11-03 18:06:52
    # 按0排序,没有给名字的时候,转化成df是自动命名01234 # NUNIQUE # A 4 # B 3 # C 2 # 第十二种写法:等价于第十一种写法,直接使用DF,不会多加index。 # nunique()等价于nunique(axis=0)...
  • spark DataFrame 多同时重命名

    千次阅读 2020-01-14 22:40:41
    我们遇到这样一个问题, 1 先生成一个包含所有预置字段的DataFrame(此时的字段名称是英文的) 2 根据传入的条件动态组合字段从1中的大的DataFrame 里 select的到想要的字段 ...package ezr.df.drill i...
  • 处理dataframe数据时,经常碰到在指定位置插入行或。 (1)插入行 插入行采用将dataframe先分开,然后再合并的方法 引用一下这边文章的例子:dataframe指定位置插入行 df = pd.DataFrame({ '动物' : ['狗','猫','...
  • 对pandas的某一使用map方法

    千次阅读 2018-11-22 11:14:14
    读入训练数据后,现在对name进行处理。 df["FamilyName"]=df["Name"].map(lambda x: x.split(",")[0].strip()) df["FullName"]=df["Name"].map(lambda x: x....
  • 对dataframe的行和进行遍历和修改

    万次阅读 2018-12-03 21:12:12
    首先先定一个这样的字典,然后我们用不同的方法对其遍历和修改 字典df df=pd.DataFrame({"A":[1,2,3,4],"B"...遍历 1.ix函数(df.ix[条件,操作区域]) df.ix[df.A&gt;1,'B'...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 31,954
精华内容 12,781
关键字:

df列改名字