我有一个看起来像这样的数据框(我的输入数据库涉及COVID情况)
数据:
Configuration.UnitOfWork.IsolationLevel = IsolationLevel.RepeatableRead;
值得注意的是,上述数据中的“日期”列是一个数字(不是日期时间)
我想使其成为这样的时间序列(期望的输出),以日期作为索引,每个州的COVID案例作为列
date state cases
0 20200625 NY 300
1 20200625 CA 250
2 20200625 TX 200
3 20200625 FL 100
5 20200624 NY 290
6 20200624 CA 240
7 20200624 TX 100
8 20200624 FL 80
...
到目前为止,我设法使用以下代码创建了输出的骨架
NY CA TX FL
20200625 300 250 200 100
20200626 290 240 100 80
...
返回:
states = ['NY', 'CA', 'TX', 'FL']
days = [20200625, 20200626]
columns = states
positives = pd.DataFrame(columns = columns)
i = 0
for day in days:
positives.loc[i, "date"] = day
i = i +1
positives.set_index('date', inplace=True)
positives= positives.rename_axis(None)
print(positives)
在以下情况下,如何从“数据”数据框中获取“案例”列的值?
(i)data [“ state”]中的值=“正”的列标题,
(ii)data [“ date”]中的值=“正”的行索引
答案 0 :(得分:4)
您可以这样做:
df = df.set_index(['date', 'state']).unstack().reset_index()
# fix column names
df.columns = df.columns.get_level_values(1)
state CA FL NY TX
0 20200624 240.0 NaN 290.0 NaN
1 20200625 250.0 100.0 300.0 200.0
稍后,要再次设置索引,我们需要显式设置名称,请执行以下操作:
df = df.set_index("")
df.index.name = "date"
答案 1 :(得分:2)
您感兴趣的转换称为枢轴。您可以在Pandas中实现以下目标:
{{1}}