草庐IT

Python - 在 Pandas DataFrame 中取消嵌套单元格

假设我有DataFramedf:abcvf3|4|5v26vf4|5我想生成这个df:abcvf3vf4vf5v26vf4vf5我知道如何使用tidyr包在R中进行这种转换。在pandas中有没有一种简单的方法可以做到这一点? 最佳答案 你可以:importnumpyasnpdf=df.set_index(['a','b'])df=df.astype(str)+'|'#There'saspace''tomatchthereplacelaterdf=df.c.str.split('|',expand=True).stack().res

python - 将 pandas 数据框从行 reshape 为列

我正在尝试reshape我的数据。乍一看,这听起来像是转置,但实际上不是。我尝试了熔化、堆叠/取消堆叠、连接等。用例我希望每个独特的个人只有一行,并将所有工作历史记录在列中。对于客户而言,跨行阅读信息比逐列阅读更容易。这是数据:importpandasaspdimportnumpyasnpdata1={'Name':["Joe","Joe","Joe","Jane","Jane"],'Job':["Analyst","Manager","Director","Analyst","Manager"],'JobEffDate':["1/1/2015","1/1/2016","7/1/201

python - Numpy:使用 reshape 或 newaxis 添加维度

ndarray.reshape或numpy.newaxis均可用于向数组添加新维度。它们似乎都创建了一个View,使用一个而不是另一个有什么理由或优势吗?>>>barray([1.,1.,1.,1.])>>>c=b.reshape((1,4))>>>c*=2>>>carray([[2.,2.,2.,2.]])>>>c.shape(1,4)>>>barray([2.,2.,2.,2.])>>>d=b[np.newaxis,...]>>>darray([[2.,2.,2.,2.]])>>>d.shape(1,4)>>>d*=2>>>barray([4.,4.,4.,4.])>>>carra

python - 将 pandas DataFrame 列添加到行的最佳方法

这个问题在这里已经有了答案:Meltingapandasdataframe(4个答案)Stackingdataframecolumns(Pandas)(1个回答)关闭4年前。我必须找到使用现有DataFrame创建新DataFrame的最佳方法。查看此链接以获得完整代码:jdoodle.com/a/xKP我有这种数据框:df=pd.DataFrame({'length':[112,214,52,88],'views':[10000,50000,25000,5000],'click':[55,64,85,9]},index=['id1','id2','id3','id4'])clickl

基于保留 ID 和其他行的列名的 Python reshape

reshapedf的最佳方式是什么,以便它根据列名的相似性堆叠列,同时在新列中保留列名的唯一ID部分?我有一个类似于下面的df(我的实际数据还包括需要保留的NaN值):df=pandas.DataFrame({"RX_9mm":scipy.randn(5),"RY_9mm":scipy.randn(5),"TX_9mm":scipy.randn(5),"TY_9mm":scipy.randn(5),"RX_10mm":scipy.randn(5),"RY_10mm":scipy.randn(5),"TX_10mm":scipy.randn(5),"TY_10mm":scipy.rand

python - TensorFlow tf.reshape Fortran 命令(像 numpy)

TensorFlow是否提供了一种在Fortran中reshape张量的方法(列优先顺序?NumPy允许:a=...np.reshape(a,(32,32,3),order='F')我正在尝试将CIFAR图像reshape为32x32x3(来自形状为3072x1的矢量),但我得到的图像看起来像这样:在Numpy中使用Fortran顺序可以解决问题,但我需要在TensorFlow中执行相同的操作。编辑:我现在意识到我可以通过整形为3x32x32然后转置输出来获得正确的输出。我仍然有点惊讶TF没有提供行优先或列优先顺序的开箱即用的reshape。 最佳答案

python - reshape Pandas 数据框

假设有这样一个数据框:df=pd.DataFrame([[1,2,3,4],[5,6,7,8],[9,10,11,12]],columns=['A','B','A1','B1'])我想要一个如下所示的数据框:什么不起作用:new_rows=int(df.shape[1]/2)*df.shape[0]new_cols=2df.values.reshape(new_rows,new_cols,order='F')当然我可以遍历数据并制作一个新的列表列表,但必须有更好的方法。有什么想法吗? 最佳答案 您可以使用lreshape,对于id列

python - Numpy - 从数组中切片二维行或列向量

我正在尝试找到一个巧妙的小技巧,用于从二维数组中切割行/列并获得(col_sizex1)或(1xrow_size).有没有比在每次切片后使用numpy.reshape()更简单的方法?干杯,斯蒂芬 最佳答案 您可以在一次操作中切片并插入新轴。例如,这是一个二维数组:>>>a=np.arange(1,7).reshape(2,3)>>>aarray([[1,2,3],[4,5,6]])要切出单个列(返回形状为(2,1)的数组),以None作为第三维进行切片:>>>a[:,1,None]array([[2],[5]])要切出单个行(返回

python - 打乱一个 numpy 数组

我有一个二维numpy数组,我想将其打乱。最好的方法是将其reshape为1-d、洗牌并再次reshape为2-d,还是可以洗牌而不reshape?仅使用random.shuffle不会产生预期的结果,而numpy.random.shuffle只会随机播放行:importrandomimportnumpyasnpa=np.arange(9).reshape((3,3))random.shuffle(a)printa[[012][345][345]]a=np.arange(9).reshape((3,3))np.random.shuffle(a)printa[[678][345][012

python - Tensorflow 张量 reshape 并用零填充

有没有办法reshape张量并用零填充任何溢出?我知道ndarray.reshape会这样做,但据我了解,将Tensor转换为ndarray需要在GPU和CPU之间来回切换。Tensorflow的reshape()文档说TensorShapes需要有相同数量的元素,所以也许最好的方法是pad()然后reshape()?我正在努力实现:a=tf.Tensor([[1,2],[3,4]])tf.reshape(a,[2,3])a=>[[1,2,3],[4,0,0]] 最佳答案 据我所知,没有内置运算符可以执行此操作(如果形状不匹配,tf