私信  •  关注

Alexander

Alexander 最近回复了
4 月前
回复了 Alexander 创建的主题 » 用于格式化字符串的Python解包列表[重复]

下面是更完整的回答:

def convert_player_types_to_str(player_types):
    n = len(player_types)
    if not n:
        return ''
    if n == 1:
        return player_types[0]
    return ', '.join(player_types[:-1]) + f' and {player_types[-1]}'

>>> convert_player_types_to_str(['normal'])
'normal'

>>> convert_player_types_to_str(['normal', 'ghost'])
'normal and ghost'

>>> convert_player_types_to_str(['normal', 'ghost', 'goblin'])
'normal, ghost and goblin'
5 月前
回复了 Alexander 创建的主题 » Python Dataframe:基于特定条件删除重复项

尝试首先根据距离对数据帧进行排序,然后删除重复的商店。

df = shops_df.sort_values('Distance')
df = df[~df['Shop ID'].duplicated()]  # The tilda (~) inverts the boolean mask.

或者只是一个链式表达式(每个注释来自@chmielcode)。

df = (
    shops_df
    .sort_values('Distance')
    .drop_duplicates(subset='Shop ID', keep= 'first')
    .reset_index(drop=True)  # Optional.
)
10 月前
回复了 Alexander 创建的主题 » python pandas:按其他列分组时创建累积平均值

即使名字没有按 transforming 这个 expanding 函数..

>>> df.assign(cumAverage=df.groupby('name', sort=False)['value'].transform(lambda x: x.expanding().mean()))
   name  value  cumAverage
0  Jack    0.0       0.000
1  Jack    1.0       0.500
2  Jack    0.5       0.500
3  Jack    1.0       0.625
4  Jill    0.0       0.000
5  Jill    2.0       1.000

# Unsorted dataframe.
df = pd.DataFrame({"name": ['Jack'] * 3 + ['Jill'] * 2 + ['Jack'], "value": [0, 1, .5, 0, 2, 1]})
>>> df.assign(cumAverage=df.groupby('name', sort=False)['value'].transform(lambda x: x.expanding().mean()))
   name  value  cumAverage
0  Jack    0.0       0.000
1  Jack    1.0       0.500
2  Jack    0.5       0.500
3  Jill    0.0       0.000
4  Jill    2.0       1.000
5  Jack    1.0       0.625
1 年前
回复了 Alexander 创建的主题 » 使用python从一系列日期中检查项目列表

您可以使用条件列表理解:

import datetime as dt

f = '%d/%m/%Y'  # Date format.

>>> [date for date in c 
     if dt.datetime.strptime(a, f) 
     <= dt.datetime.strptime(date, f) 
     <= dt.datetime.strptime(b, f)]
['01/08/2017',
 '20/08/2017',
 '21/08/2017',
 '22/08/2017',
 '23/08/2017',
 '24/08/2017',
 '25/08/2017',
 '26/08/2017',
 '27/08/2017',
 '28/08/2017']