我有一个大型数据集,它有两列 Name, Value,看起来像这样:
import pandas as pd
data = [['code',10],['classe',12],['series','B'], ['code',12],['classe',1],
['series','C'],['code',16],['classe',18],['series','A']]
df1 = pd.DataFrame(data,columns=['Name','Value'])
df1
Run Code Online (Sandbox Code Playgroud)
产量
Name Value
0 code 10
1 classe 12
2 series B
3 code 12
4 classe 1
5 series C
6 code 16
7 classe 18
8 series A
Run Code Online (Sandbox Code Playgroud)
我想要一些这样的事情:
code classe series
0 10 10 B
1 12 1 C
2 16 18 A
Run Code Online (Sandbox Code Playgroud)
在我的数据集中它收获了N次,我想将它转换为三列code, classe, series.
感谢您的帮助!
pd.concat带有 a 的选项 1groupby应该可以做到。
pd.concat([
pd.Series(v.values, name=k) for k, v in df1.groupby('Name')['Value']
],
axis=1
)
classe code series
0 12 10 B
1 1 12 C
2 18 16 A
Run Code Online (Sandbox Code Playgroud)
选项 2
pivot
Flaky hub hack,不要指望它!该解决方案假定内部值Name定期交替 - 代码、类、系列、代码、类、系列,...等等。否则将无法工作。
df1.assign(Index=df1.index // 3).pivot('Index', 'Name', 'Value')
Name classe code series
Index
0 12 10 B
1 1 12 C
2 18 16 A
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
53 次 |
| 最近记录: |