python - 旋转数据框以自动创建列

标签 python pandas dataframe pivot multiple-columns

我有一个像这样的数据框

Date Lag
d1    20
d1    30
d1    40
d2    10
d2    50

并且想要转换成这样的东西

Date  <column names>
d1    20 30 40
d2    10 50 None

列可以命名为任何名称。有办法做到这一点吗?

最佳答案

我认为您需要通过 cumcount 创建新的列名称到新列,然后使用 pivot :

print (df)
  Date  Lag
0   d1   20
1   d1   30
2   d1   40
3   d2   10
4   d2   50

df['g'] = df.groupby('Date')['Lag'].cumcount()
df = df.pivot(index='Date', columns='g', values='Lag')
print (df)
g        0     1     2
Date                  
d1    20.0  30.0  40.0
d2    10.0  50.0   NaN

您还可以更改列名称:

df['g'] = 'Col' + df.groupby('Date')['Lag'].cumcount().astype(str)
print (df)
  Date  Lag     g
0   d1   20  Col0
1   d1   30  Col1
2   d1   40  Col2
3   d2   10  Col0
4   d2   50  Col1

df = df.pivot(index='Date', columns='g', values='Lag')
print (df)
g     Col0  Col1  Col2
Date                  
d1    20.0  30.0  40.0
d2    10.0  50.0   NaN

关于python - 旋转数据框以自动创建列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40419141/

相关文章:

python - 根据模式匹配从 Redis 中删除对象

java - Python 到 Java 加密 (RSA)

python - Gunicorn - 无法访问 Django 项目(浏览器超时)

python - 减去两个 Pandas Dataframe

python - pandas 在删除重复项时在 GroupBy 之后丢失索引

python - 如何在箱线图中显示 Pandas DataFrame 的最后一行

python - 在 Python Matplotlib 中绘制箱线图和须线图时出现意外的关键字参数 'label'

python - 使用 Python 对 Excel 列进行排序

python - 在python中将Dataframe列转换为时间格式

apache-spark - 优化 Spark mergeByKey