交叉表以填充另一列的数据

时间:2019-02-26 17:12:00

标签: python pandas crosstab

我没有来用另一个列的数据填充交叉表:也许这不是解决方案...

App.js

我的代码可为您提供帮助:

import React, { Component } from "react";
import logo from "./logo.svg";
import "./App.css";
import { getRecords } from "./utils/dbtools.js";

const results = getRecords();

class App extends Component {
  render() {
    return (
      <div className="App">
        <header className="App-header">
          <img src={logo} className="App-logo" alt="logo" />
          <p>
            Edit <code>src/App.js</code> and save to reload.
          </p>
          <a
            className="App-link"
            href="https://reactjs.org"
            target="_blank"
            rel="noopener noreferrer"
          >
            Learn React
          </a>
        </header>
      </div>
    );
  }
}

export default App;

2 个答案:

答案 0 :(得分:1)

如果您的原始df是这个

   id  id_m  X
0  10    10  a
1  10    11  b
2  10    12  c
3  11    10  d
4  11    11  e
5  11    12  f
6  12    10  g
7  12    11  h
8  12    12  i

你想要的就是这个

id_m 10 11 12
id           
10    a  b  c
11    d  e  f
12    g  h  i

您可以groupbyid列,取id_m列的max,然后X {{1 }}列。

unstack

如果您真的想使用id_m,也可以这样做

df.groupby([
    'id',
    'id_m'
]).X.max().unstack()

相同的结果。

最后,由于行在索引和列方面是唯一的,因此只能使用pivot_table

df.pivot_table(index='id', columns='id_m', values='X', aggfunc='max')

参考

答案 1 :(得分:1)

由于您的文字为values,因此您的操作更加棘手,必须明确告诉熊猫aggfunc,您可以使用lambda函数,如下所示:< / p>

df_final = pd.pivot_table(df_m, index='id', columns='id_m', values='X', aggfunc=lambda x: ' '.join(x) )


id_m    10  11  12
id          
10      a   b   c
11      d   e   f
12      g   h   i