我有一个csv文件,其中包含一些银行的信息。总共有9列。 id
和parentid
这两列,分别包含每个银行的ID,也包含parentid
(parentid = 0
(如果给定的银行是父行,则用{表示) {1}})。
我需要将所有存储体分离到单独的数据帧中,以便父记录的所有子项都应与父记录位于同一数据帧中。
样本数据:
'Type = T'
我已经使用熊猫加载了csv文件,并根据“类型”列将子代和父代分开。
我被剩下的部分困住了。This is what a sample dataframe looks like
答案 0 :(得分:0)
这会将数据帧拆分为数据帧的字典(键是父ID):
selection = df['parentid'].mask(df['parentid']==0, df['id'])
{sel: df.loc[selection == sel] for sel in selection.unique()}
答案 1 :(得分:0)
groupby
在这里可以提供帮助:
df.groupby(np.where(df.parentid==0, df.id, df.parentid))
将为您提供一个元组(id,dataframe_for_that_id_and_its_childs)的迭代。
示例:
for i, g in df.groupby(np.where(df.parentid==0, df.id, df.parentid)):
print(i)
print(g)
给予:
1234
type symbol price ... amendtime id parentid
0 T ICICIBANK 1000 ... 20121209103030 1234 0
3 P ICICIBANK 1100 ... 20121209103030 1237 1234
7 P ICICIBANK 1100 ... 20121209103030 1241 1234
[3 rows x 9 columns]
1235
type symbol price ... amendtime id parentid
1 T AXISBANK 1000 ... 20121209103031 1235 0
4 P AXISBANK 1000 ... 20121209103031 1238 1235
[2 rows x 9 columns]
1236
type symbol price ... amendtime id parentid
2 T SBIBANK 1000 ... 20121209103032 1236 0
[1 rows x 9 columns]
1239
type symbol price ... amendtime id parentid
5 T ICICIBANK 1000 ... 20121209103035 1239 0
8 P ICICIBANK 1100 ... 20121209103035 1242 1239
[2 rows x 9 columns]
1240
type symbol price ... amendtime id parentid
6 T .CITIBANK 1000 ... 20121209103036 1240 0
[1 rows x 9 columns]