【发布时间】:2018-07-03 21:49:07
【问题描述】:
我有一个由 4 列、分子分母、国家和月份组成的数据集。我正在旋转它以将月份作为列,将国家/地区作为索引,并将值作为sum(numerator)/sum(denominator)。我得到的唯一问题是我的列都乱序了。如何对列进行排序,以便较早的月份首先出现?我尝试了table = table.sort_index(1),但没有成功。
table = pd.pivot_table(df, values=['Numerator', 'Denominator'], index='Country',
columns=['Month'], aggfunc=np.sum)
table = table['Numerator'] / table['Denominator']
用完整的例子和数据编辑:
数据:
Denominator,Numerator,Country,Month
10,4,USA,1-Jan
6,2,USA,1-Jan
10,1,Canada,1-Jan
9,2,Canada,1-Jan
6,4,Canada,1-Feb
4,3,Canada,1-Feb
代码:
import pandas as pd
import numpy as np
df = pd.read_csv('data.csv')
table = pd.pivot_table(df, values=['Numerator', 'Denominator'], index='Country',
columns=['Month'], aggfunc=np.sum)
table = table['Numerator'] / table['Denominator']
print table
输出:
Month 1-Feb 1-Jan
Country
Canada 0.7 0.157895
USA NaN 0.37500
期望的输出:
Month 1-Jan 1-Feb
Country
Canada 0.157895 0.7
USA 0.37500 NaN
【问题讨论】:
-
月份列是字符串还是整数?您能否显示原始
df的 5-10 行以便重构您的输出? -
在你展示数据之前,我只能为你提供这个链接..stackoverflow.com/questions/47152691/how-to-pivot-a-dataframe/…
-
@cᴏʟᴅsᴘᴇᴇᴅ。这是一个字符串。我已经添加了数据以及完整的代码。
-
录音是按时间顺序制作的吗?
-
在 csv 中?不一定
标签: python python-2.7 pandas