我有一个包含两列 ID
和 Value
的 Pandas 数据框。
我想对 ID
列进行分组
并根据总结果将分组结果(Value
)转换为带有数字后缀Value1
、Value2
、Value3
等的多列。>
当前数据帧:
df = pd.DataFrame({'ID': ['A', 'A', 'A', 'B', 'C', 'C', 'D', 'E', 'F', 'F', 'F', 'F'], 'Value': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L'] } )
df
ID Value
0 A A
1 A B
2 A C
3 B D
4 C E
5 C F
6 D G
7 E H
8 F I
9 F J
10 F K
11 F L
预期数据帧:
ID Value1 Value2 Value3 Value4
0 A A B C NaN
1 B D NaN NaN NaN
2 C E F NaN NaN
3 D G NaN NaN NaN
4 E H NaN NaN NaN
5 F I J K L
我也使用数据透视表尝试了多种解决方案,但没有得到结果。
我的尝试
pd.pivot(df, index='ID', columns='ID', values='Value')
答案 0 :(得分:4)
// Set up mocks and such
@Test
void doTest() throws Exception {
final Service service = new Service(publisherMock, sensorRepositoryMock);
final Sample sample = service.updateWeatherFeed().block();
// Assert Sample
assertEquals(sample, ...);
// Verify mocks
verify(publisherMock, times(1)).publish(sample);
verify(sensorRepositoryMock, times(1)).insertSample(sample);
}
答案 1 :(得分:3)
您可以使用 MultiIndex
和 groupby.cumcount
unstack
df.set_index(['ID', df.groupby('ID').cumcount()]).unstack().add_prefix('Value').droplevel(0, 1).reset_index()
出:
ID Value0 Value1 Value2 Value3
0 A A B C NaN
1 B D NaN NaN NaN
2 C E F NaN NaN
3 D G NaN NaN NaN
4 E H NaN NaN NaN
5 F I J K L