qq_39382851 2021-10-08 10:15 采纳率: 33.3%
浏览 141
已结题

DataFrame相关问题,望可详解

df_empty是1800行,256列的dataframe;df_pre是1800行75列dataframe。

我想用下面代码将data_pre里的的某个元素出现次数乘上它在data_pre里的最后一个位置数
"1/(1+pow(math.e,-l[-1]))"这样的函数作为新的newdata2的元素。df_empty.columns是很多名字,它包含了所有的data_pre里的所有元素。
这个代码很乱,而且跑出来结果还是全0的dataframe,崩溃了,求解决。

for i in range(len(df_empty.columns)): 
        for idx in range(1800):
            for j in range(len(data_pre.columns)-1):
                if df_empty.columns[i] in data_pre.iloc[j]:
                    l = data_pre.loc[idx][data_pre.loc[idx].values == df_empty.columns[i]].index
                    newdata2[i][idx] = data_pre.iloc[idx].tolist().count(df_empty.columns[i])*(1/(1+pow(math.e,-l[-1])))

  • 写回答

3条回答 默认 最新

  • Kappuccinno 2021-10-08 17:44
    关注

    这样可以

    
    import math
    import pandas as pd
    import numpy as np
    #所有的读取文件均删除了索引列,这些代码不集中展现,以后保存csv的时候注明to_csv=false
    data_pre=pd.read_csv('data_pre.csv')
    data_pre['row']=data_pre.index#注明数据的行
    #reshape成长数据,写成每一个名字对应某行某列的形式
    data_shape=pd.melt(data_pre,id_vars='row',value_vars=data_pre.columns[:-2],var_name='col',value_name='name')
    #把列名转为整形
    data_shape['col']=data_shape['col'].astype("int")
    #以行-名字对列进行分类汇总统计,max就是每行最后出现的那个列所以是最大值
    group_data=data_shape.groupby(['row','name'])['col'].agg(['count','max'])
    #你可以单独运行这个语句print一下看看有什么区别
    group_data=group_data.reset_index()
    #函数对应
    group_data['result']=group_data['count']/(1+math.e**(-group_data['max']))
    #变成宽数据,此时名字变成了各个列名
    wide_data=group_data.pivot(index='row',columns='name',values='result')
    #行中没有该名字的本为缺失,替换为0
    wide_data.fillna(0,inplace=True)
    empty_csv=pd.read_csv('df_empty.csv')#读取目标列名
    null_data=np.zeros((len(wide_data),len(empty_csv.columns)))
    resort=pd.DataFrame(data=null_data,columns=empty_csv.columns)#先建立一个1800*249的空数据
    for each in resort:
        resort[each]=wide_data[each]#逐列对应补充
    resort.to_csv('result.csv',index=False)
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 10月16日
  • 已采纳回答 10月8日
  • 创建了问题 10月8日

悬赏问题

  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥30 python代码,帮调试,帮帮忙吧
  • ¥15 #MATLAB仿真#车辆换道路径规划