我有一个已经根据第一列分组的表。我想将表拆分为仅具有相应第二列的子表。我想在python中使用pandas或其他东西。我不希望使用“ awk”,因为这将需要我进行“子处理”或“ os”。最后,我实际上只需要根据第一列分开的第二列中的条目。该表的大小可以是大约10000行X 6列。
这些是我发现的类似帖子,但我不知道如何针对我的目的对其进行修改。 Split pandas dataframe based on groupby
Splitting groupby() in pandas into smaller groups and combining them
P0A910 sp|A0A2C5WRC3| 84.136 0.0 100
P0A910 sp|A0A068Z9R6| 73.816 0.0 99
Q9HVD1 sp|A0A2G2MK84| 37.288 4.03e-34 99
Q9HVD1 sp|A0A1H2GM32| 40.571 6.86e-32 98
P09169 sp|A0A379DR81| 52.848 2.92e-117 99
P09169 sp|A0A127L436| 49.524 2.15e-108 98
我希望将其拆分如下
P0A910 A0A2C5WRC3
P0A910 A0A068Z9R6
Q9HVD1 A0A2G2MK84
Q9HVD1 A0A1H2GM32
P09169 A0A379DR81
P09169 A0A127L436
或进入列表
A0A2C5WRC3
A0A068Z9R6
A0A2G2MK84
A0A1H2GM32
A0A379DR81
A0A127L436
答案 0 :(得分:0)
因此,您的问题是分隔字符串。是您想要的吗?
new_col = df[1].str[3:-1]
list(new_col.groupby(df[0]))
答案 1 :(得分:0)
因此,我设法获得了某种解决方案。在此解决方案中,我设法删除了第二个中的前缀,并在熊猫中使用groupby将条目按第一列分组。然后,遍历它,并将每个组分别写入csv文件。我从@Quang的答案以及此link中获得帮助。可能可以用更好的方法完成,但这是我的代码:
{
"key": "ctrl+alt+oem_5",
"command": "editor.action.jumpToBracket",
"when": "editorTextFocus"
},
更新-删除了除感兴趣的列之外的所有列。这是先前代码的延续
import pandas as pd
#read .csv as dataframe
data=pd.read_csv("BlastOut.csv")
#truncates sp| | from second column (['B']).
new_col=data['B'].str[3:-1]
#replaces second column with new_col
data['B']=new_col.to_frame(name=None)
#groups dataframe by first column (['A'])
grouped=data.groupby('A')
#loops through grouped items and writes each group to .csv file with title
#of group ([group_name].csv)
for group_name, group in grouped:
group.to_csv('Out_{}.csv'.format(group_name))