有人可以告诉我如何将此表格转换为其他州吗?
就像这样:
frequency
event day enrollment_id
access 01 14333 2
14343 14
14391 1
14469 1
35220 9
35307 2
35442 2
61263 1
140486 1
02 14320 9
14321 4
14322 30
14324 3
14325 2
wiki 01 35517 1
76933 1
111900 3
02 47872 1
47875 1
148426 1
03 60416 1
96487 2
96502 2
96505 1
96513 2
2014-07-24 200888 1
答案 0 :(得分:2)
您可以使用this function。
演示:
# first copy the file contents into clipboard
In [184]: df = read_clipboard_mi(index_names_row=1)
In [185]: df
Out[185]:
frequency
event day enrollment_id
access 01 14333 2
14343 14
14391 1
14469 1
35220 9
35307 2
35442 2
... ...
wiki 02 148426 1
03 60416 1
96487 2
96502 2
96505 1
96513 2
2014-07-24 200888 1
[26 rows x 1 columns]
In [186]: df.index
Out[186]:
MultiIndex(levels=[['access', 'wiki'], ['01', '02', '03', '2014-07-24'], [14320, 14321, 14322, 14324, 14325, 14333, 14343, 14391, 14469, 352
20, 35307, 35442, 35517, 47872, 47875, 60416, 61263, 76933, 96487, 96502, 96505, 96513, 111900, 140486, 148426, 200888]],
labels=[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1
, 0, 0, 0, 1, 1, 1, 2, 2, 2, 2, 2, 3], [5, 6, 7, 8, 9, 10, 11, 16, 23, 0, 1, 2, 3, 4, 12, 17, 22, 13, 14, 24, 15, 18, 19, 20, 21, 25]],
names=['event', 'day', 'enrollment_id'])
PS你可以轻松采用这个功能来读取文件而不是剪贴板......
答案 1 :(得分:1)
我认为如果需要将MultiIndex
的第二级更改为天:
a = df.index.get_level_values(0)
b = df.index.get_level_values(1).day
c = df.index.get_level_values(2)
df.index = pd.MultiIndex.from_arrays([a,b,c], names=['event', 'day', 'enrollment_id'])
但如果需要计算b
的第二级别,请使用:
b = df.groupby(level=1).cumcount().add(1).astype(str).str.zfill(2)
如果需要创建MultiIndex DataFrame
:
df = pd.read_csv(file).set_index(['event', 'day', 'enrollment_id'])