选项0
from cytoolz import concat
list(set(concat(df.available_fruits.values.tolist())))
选项1
list({k: 1 for x in df.available_fruits.values.tolist() for k in x})
['apple', 'banana', 'tomato', 'kiwi']
选项2
左场...
from sklearn.preprocessing import MultiLabelBinarizer
MultiLabelBinarizer().fit(df.available_fruits).classes_.tolist()
['apple', 'banana', 'kiwi', 'tomato']
时序
结论:
results.div(results.min(1), 0).round(2).pipe(lambda d: d.assign(Best=d.idxmin(1)))
pir0 pir1 pir2 galt jez1 jez2 prgn Best
N
1 2.36 1.00 4.43 13.93 10.82 1.00 2.86 pir1
3 1.67 1.51 3.94 12.27 7.20 1.00 2.73 jez2
10 1.59 1.09 4.90 9.90 9.24 1.00 3.03 jez2
30 1.20 1.39 2.44 6.78 9.42 1.00 2.67 jez2
100 1.06 1.45 1.66 12.15 20.50 1.00 2.00 jez2
300 1.13 1.76 1.33 28.30 33.41 1.00 2.01 jez2
1000 1.00 1.70 1.11 111.74 32.79 1.18 1.95 pir0
3000 1.00 1.93 1.02 364.07 32.18 1.03 2.02 pir0
10000 1.08 1.87 1.00 1223.63 35.10 1.03 1.97 pir2
代码
pir0 = lambda df: list(set(concat(df.available_fruits.values.tolist())))
pir1 = lambda df: list({k: 1 for x in df.available_fruits.values.tolist() for k in x})
pir2 = lambda df: MultiLabelBinarizer().fit(df.available_fruits).classes_.tolist()
galt = lambda df: list(set(df.available_fruits.sum()))
jez1 = lambda df: np.unique(np.concatenate(df['available_fruits'].values.tolist())).tolist()
jez2 = lambda df: list(set(chain.from_iterable(df.available_fruits.values.tolist())))
prgn = lambda df: list(set([val for lst in df.available_fruits for val in lst]))
results = pd.DataFrame(
index=pd.Index([1, 3, 10, 30, 100, 300, 1000, 3000, 10000, 30000], name='N'),
columns='pir0 pir1 pir2 galt jez1 jez2 prgn'.split(),
dtype=float
)
for i in results.index:
d = pd.concat([df] * i, ignore_index=True)
for j in results.columns:
stmt = '{}(d)'.format(j)
setp = 'from __main__ import d, {}'.format(j)
results.set_value(i, j, timeit(stmt, setp, number=10))
fig, (a1, a2) = plt.subplots(1, 2, figsize=(10, 10))
results.plot(loglog=True, ax=a1)
results.div(results.min(1), 0).round(2).plot.barh(logx=True, ax=a2)
我不敢回答,当我看到'问题dataframe'标签,因为我知道没有人能够击败jezrael说到熊猫,我很佩服你的哥们,从你们学到了很多东西,谢谢:) + 1 –
@akashkarothiya继续尝试好友。你有一天会到达那里。哦,+1 btw。 –
谢谢@cᴏʟᴅsᴘᴇᴇᴅ:)对我来说这意味着很多 –