gt.csv
301
234[
'ad'
,'bd'
,'cd'
]301
235[
'a',
'b',
'c']
301237
['af'
,'bf'
,'cf'
]301
239[
'a2'
,'b2'
,'c2'
]302
236[
'a1'
,'b1'
,'c1'
]303
238[
'a3'
,'b3'
,'c3'
]303
2323
['a7'
,'b7'
,'c7'
]304
230[
'a9'
,'b9'
,'c9'
]
需求:
針對gt.csv,按第一列的值劃分後,隨意取出不同的值及對應的行
import pandas as pd
ground_truth =
'./gt.csv'
ground_truth_data = pd.read_csv(ground_truth,
names=
['queryid'
,'termid'
,'context'],
delim_whitespace=
true
)group = ground_truth_data.groupby(
'queryid'
)def
get_partdata
(group,
*args)
:# 前提是已經讀入ground_truth_data,並且進行groupby操作
args_dict =
for i in
range
(len
(args)):
args_dict[i]
= args[i]
all_lt =[[
]for _ in
range
(len
(args))]
for g in group:
queryid = g[0]
for key, value in args_dict.items():
if queryid in args_dict[key]
: all_lt[key]1]
)return
[pd.concat(x)
for x in all_lt]
train_lt =
[301
]dev_lt =
[302
]test_lt =
[303
,304
]train_data = get_partdata(group, train_lt)
print
('first:'
)print
(train_data)
print
('\n'
)train_data, dev_data = get_partdata(group, train_lt, dev_lt)
print
('second:'
)print
(train_data)
print
(dev_data)
print
('\n'
)train_data, dev_data, test_data = get_partdata(group, train_lt, dev_lt, test_lt)
print
('third:'
)print
(train_data)
print
(dev_data)
print
(test_data)
print
('\n'
)>>
>
first:
[ queryid termid context
0301
234[
'ad'
,'bd'
,'cd']1
301235
['a'
,'b'
,'c']3
301237
['af'
,'bf'
,'cf']5
301239
['a2'
,'b2'
,'c2']]
second:
queryid termid context
0301
234[
'ad'
,'bd'
,'cd']1
301235
['a'
,'b'
,'c']3
301237
['af'
,'bf'
,'cf']5
301239
['a2'
,'b2'
,'c2'
] queryid termid context
2302
236[
'a1'
,'b1'
,'c1'
]third:
queryid termid context
0301
234[
'ad'
,'bd'
,'cd']1
301235
['a'
,'b'
,'c']3
301237
['af'
,'bf'
,'cf']5
301239
['a2'
,'b2'
,'c2'
] queryid termid context
2302
236[
'a1'
,'b1'
,'c1'
] queryid termid context
4303
238[
'a3'
,'b3'
,'c3']6
3032323
['a7'
,'b7'
,'c7']7
304230
['a9'
,'b9'
,'c9'
]
注意:
1.生成多個空列表的方法是
all_lt =[[
]for _ in
range
(len
(args)
)]
結果是[,,]
而不是下面這種方法
all_lt =[[
]*len(args)
]
這個的結果是
2.在return部分,如果返回的值確定是大於乙個
的話,可以用
return
(pd.concat(x)
for x in all_lt]
)
否則當返回的值只有乙個時,返回的是生成器物件,而不是具體的值 Python不定長引數
記錄了python函式的不定長引數,用 來接收不定長的資料。在定義函式時,可以在形參前邊加上乙個 這樣這個形參將會獲取到所有的實參,它將會將所有的實參儲存到乙個元組中 a會接受所有的位置實參,並且會將這些實參統一儲存到乙個元組中 裝包 fn3函式的使用 形參可以接收其他的關鍵字引數,它會將這些引數統...
不定長引數 python
如果向乙個函式傳遞的引數的數量每次都不同,想要讓函式去做每次相加或者其他的事的時候,可以用 變數名 傳遞不定長引數,傳進去以後的變數會變成乙個元組def sum a result 0print type a for i in a result i return result result sum 1...
python不定長引數詳解
如果想要乙個函式能不固定接收任意多個引數,可以使用不定長引數。python自定義函式中有兩種不定長引數,第一種是 在傳入額外的引數時可以不用指明引數名,直接傳入引數值即可。第二種是 這種型別返回的是字典,傳入時需要指定引數名。加了乙個星號 不定長引數會以元組 tuple 的形式匯入,存放所有未命名的...