python - 如何将 n 列切换为 r 行 pandas 数据帧的行(最终数据帧中的 n*r 行)?

标签 python pandas dataframe

让我们采用这个数据框:

pd.DataFrame(dict(Col1=["a","c"],Col2=["b","d"],Col3=[1,3],Col4=[2,4]))
  Col1 Col2  Col3  Col4
0    a    b     1     2
1    c    d     3     4

我希望 Col1 列和 Col2 列中的每个值各一行(n=2 且 r=2,因此预期数据帧有 2*2 = 4 行)。

预期结果:

    Ind Value  Col3  Col4
0  Col1     a     1     2
1  Col1     c     3     4
2  Col2     b     1     2
3  Col2     d     3     4

请问我该怎么办?

最佳答案

Pandas 融化在这里完成了工作;剩下的只是适本地重新定位和重命名列。

使用pandas melt使用 Col3 和 4 作为索引变量来转换数据帧。熔体通常从宽转为长。
下一步 - 重新索引列,以变量和值作为前导列。
最后,适本地重命名列。

 (df.melt(id_vars=['Col3','Col4']) 
  .reindex(['variable','value','Col3','Col4'],axis=1)
  .rename({'variable':'Ind','value':'Value'},axis=1)
  )

    Ind Value   Col3   Col4
0   Col1    a   1      2
1   Col1    c   3      4
2   Col2    b   1      2
3   Col2    d   3      4

关于python - 如何将 n 列切换为 r 行 pandas 数据帧的行(最终数据帧中的 n*r 行)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60317569/

相关文章:

python - 模块未找到错误 : No module named 'SessionState

python - 用 pandas 数据框中列的最大值和最小值替换 np.inf 和 -np.inf 值?

python - 基于类别的聚合值

python - 比较两个日期列 - 检查它们是否在范围内 - 从第三列获取值

python - 如何使用pyspark创建包含大量列和日期数据的数据框?

python - 出现 Python 异常时 PyObject_CallObject 的正确返回是什么?

python - OpenCV:不规则形状区域中每种颜色的像素数?

python - 使用 oauth 将 GAE python 应用程序连接到 google 的 drive/docs/spreadsheet

r - 根据另一个数据帧中的数据更改一个数据帧上的值

python - 计算一列在 Pandas 中包含特定值的次数