我找到了许多标题相似的问题,但找不到确切的问题。
我有一个像这样的数据文件:
title1:A1
title2:A2
title3:A3
title4:A4
title5:A5
title1:B1
title2:B2
title3:B3
title4:B4
title5:B5
title1:C1
title2:C2
title3:C3
title4:C4
title5:C5
title1:D1
title2:D2
title3:D3
title4:D4
title5:D5
使用大熊猫,我想要一张这样的桌子:
title1 title2 title3 title4 title5
0 A1 A2 A3 A4 A5
1 B1 B2 B3 B4 B5
2 C1 C2 C3 C4 C5
3 D1 D2 D3 D4 D5
我的尝试
import pandas as pd
import numpy as np
df = pd.read_csv('colon_sep.txt',header=None,sep=':')
df.columns = ['title','id']
# for loop method
df2 = pd.DataFrame()
for t in df.title.unique():
df2[t] = df[df.title == t]['id'].values
df2
# HOW TO GET THIS BY Advanced methods?
我能够使用for循环获取所需的表。
使用groupby或其他任何高级方法还有更好的方法吗?
答案 0 :(得分:4)
您可以稍微简化代码,以在结尾处添加一个<style scoped>
html {
height: 100%;
}
body {
height: calc(100% - 100px);
}
.contents {
padding: 30px;
box-sizing: border-box;
}
.demo-grid {
width: 100%;
height: 300px;
box-sizing: border-box;
border: solid 1px #ddd;
}
.demo-grid.large {
height: 500px;
}
.demo-grid.middle {
height: 300px;
}
.demo-grid.small {
height: 240px;
}
.log {
width: 100%;
height: 80px;
background-color: #F5F5F5;
}
.hljs {
tab-size: 4;
}
</style>
调用以提高效率:
pivot
df = pd.read_csv('colon_sep.txt', sep=':', header=None)
df.insert(2, 2, df.groupby(0).cumcount())
df = df.pivot(index=2, columns=0, values=1)
答案 1 :(得分:0)
完成之后
df = pd.read_csv('colon_sep.txt',header=None,sep=':')
您可以
df= pd.DataFrame({name:list(column[0]) for name,column in dfc.groupby(dfc.index)})
或者,如果您将数据包含在名为text
的字符串中,则可以进行
df = pd.DataFrame([[line.split(':')[1] for line in lines.split('\n')] for lines in text.split('\n\n')])`
您可以使用
获取列名df.columns = [line.split(':')[0] for line in text.split('\n\n')[0].split('\n')]