所谓数据转置,就是是将原始数据表格沿着对角线翻折,使原来的行变成新的列,原来的列变成新的行,从而更方便地进行数据分析和处理。pandas中DataFrame的转置非常简单,每个DataFrame对象都有一个T属性,通过这个属性就能得到转置之后的DataFrame。下面介绍几个数据转置常用的场景,感受下转置前后数据展示的区别。1.数据结构调整有时候原始数据在行列方向上不太适合某些数据分析和处理需求,需要将其调整为合适的数据结构。某些机器学习算法要求输入特征矩阵的行表示样本,列表示特征值,这时候就需要将原始数据表格进行转置。比如,随机生成10个样本数据,每个样本有200个特征值:importpan
我需要使用PandasDataFrameTimeSeries列(df_all.ts)作为我的X轴来创建MatplotLib热图(pcolormesh)。如何将PandasTimeSeries列转换为可在np.meshgrid(x,y)函数中用作X轴的内容以创建热图?解决方法是使用与pandas列中相同的参数创建Matplotlibdrange,但有没有简单的方法?x=pd.date_range(df_all.ts.min(),df_all.ts.max(),freq='H')xt=mdates.drange(df_all.ts.min(),df_all.ts.max(),dt.time
我有一个包含100列的非常大的CSV文件。为了说明我的问题,我将使用一个非常基本的示例。假设我们有一个CSV文件。invaluedf0975f0151976F42977d413978B6049792C0我想选择特定的列。importpandasdata=pandas.read_csv("ThisFile.csv")为了选择我使用的前两列data.ix[:,:2]为了选择不同的列,例如第2列和第4列。我该怎么办?还有另一种方法可以通过重写CSV文件来解决此问题。但这是一个巨大的文件;所以我正在避免这种方式。 最佳答案 这将选择第二列和
假设我有这个数组:A,B1,G2,X3,F4,Z5,I如果B列等于[X,Y或Z],则将A列替换为值“T”我已经找到了如何在同一列内更改值但不跨列更改值的方法,我们将不胜感激任何帮助。 最佳答案 你可以试试这个:importpandasaspddf=pd.DataFrame({'A':[1,2,3,4,5],'B':['G','X','F','Z','I']})df.ix[df.B.isin(['X','Y','Z']),'A']='T'printdf输出:AB01G1TX23F3TZ45I请记住使用ix或loc以避免在复制的切片上设
我有一个看起来像这样的数据框:Out[14]:impwealthindweight1618000034.2002138400037.8002634200039.71530115400044.3753142130044.37532121000045.29533106250045.29534187800046.6533587600046.6533692500053.476我想使用indweight中的频率权重计算列impwealth的加权中位数。我的伪代码如下所示:#Sort`impwealth`inascendingorderdf.sort('impwealth','inplace'=T
pandas中是否有等效的rolling_apply将函数应用于一系列的累积值而不是滚动值?我意识到cumsum、cumprod、cummax和cummin存在,但我想应用自定义函数. 最佳答案 您可以使用pd.expanding_apply.下面是一个简单的示例,它只真正计算累加和,但您可以为它编写任何您想要的函数。importpandasaspddf=pd.DataFrame({'data':[10*iforiinrange(0,10)]})defsum_(x):returnsum(x)df['example']=pd.expa
有没有直接的方法来计算pandas中数据框列的平均值,但不考虑值为零的数据?就像.mean()函数中的参数一样?目前正在这样做:x=df[df[A]!=0]x.mean() 最佳答案 这也取决于你数据中0的含义。如果这些确实是“0”值,那么您的方法很好如果“0”是未测量值的占位符(即“NaN”),那么替换所有出现的“0”可能更有意义首先是'NaN'。计算平均值然后默认排除NaN值(value)观。df=pd.DataFrame([1,0,2,3,0],columns=['a'])df=df.replace(0,np.NaN)df.m
有哪些方法可以合并时间戳不完全匹配的列?DF1:datestart_timeemployee_idsession_id01/01/201601/01/201606:03:137261824871631182DF2:datestart_timeemployee_idsession_id01/01/201601/01/201606:03:377261824871631182我可以在['date','employee_id','session_id']加入,但有时同一个员工会在同一日期有多个相同的session,这会导致重复。我可以删除发生这种情况的行,但如果这样做,我会丢失有效sessio
我有一个如下所示的数据框:a1b1c1a2b2c2a3...x1.21.31.2............y1.41.2...............z...我想要的是按第n列分组。换句话说,我想要一个包含所有as的数据框,一个包含bs,一个包含csa1a2a4x1.2......yz在另一个SO问题中,我看到可以执行df.iloc[::5,:],例如,获取每5个原始数据。我当然可以通过df.iloc[:,::3]获取c列,但它无法获取a和b。有什么想法吗? 最佳答案 切片列:df[df.columns[::2]]获取每第n列例子:I
我正在按操作进行简单分组,尝试比较分组均值。正如您在下面看到的,我从一个更大的数据框中选择了特定的列,所有缺失值都已从中删除。但是当我分组时,我丢失了几列:我从来没有在pandas上遇到过这种情况,而且我在堆栈溢出上也没有发现任何其他类似的东西。有没有人有任何见解? 最佳答案 我认为这是自动排除“讨厌的”列,描述了here.示例:df=pd.DataFrame({'C':{0:-0.91985400000000006,1:-0.042379,2:1.2476419999999999,3:-0.00992,4:0.290213,5:0