gpt4 book ai didi

python - Pandas:使用其他列子组中的值创建新列

转载 作者:行者123 更新时间:2023-11-28 20:41:39 25 4
gpt4 key购买 nike

我有一个包含交易的数据框。索引是交易日期(时间戳),列是价格( float )、城市(字符串)和产品名称(字符串)。我想在数据框中添加一个新列,其中包含每个城市每种产品的最低价格。因此,对于城市和产品相同的每一行,第四列将具有相同的值。

示例代码:

# dictionary of transactions

d = {'1': ['20', 'NYC', 'Widget A'], '2': ['30', 'NYC', 'Widget A'], '3': ['5', 'NYC', 'Widget A'], \
'4': ['300', 'LA', 'Widget B'], '5': ['30', 'LA', 'Widget B'], '6': ['100', 'LA', 'Widget A']}

columns=['Price', 'City', 'Product']

# create dataframe and rename columns

df = pd.DataFrame.from_dict(data=d, orient='index')
df.columns = columns

这会产生一个看起来像这样的数据框

Price   City    Product

1 20 NYC Widget A

2 30 NYC Widget A

3 5 NYC Widget A

4 300 LA Widget B

5 30 LA Widget B

6 100 LA Widget A

所以我想为每个城市/产品子组添加一个包含最低价格的新列。因此,第 1-3 行(所有纽约市/Widget A)将为 5(第 3 行中的最低价格),第 4 行和第 5 行的值为 30(均为 LA/Widget B),第 6 行将为值为 100。

最佳答案

从示例数据框 product.csv 开始,如下所示:

date,price,city,product
2015-09-21,1.5,c1,p1
2015-09-21,1.2,c1,p1
2015-09-21,0.5,c1,p2
2015-09-21,0.3,c1,p2
2015-09-22,0.6,c2,p2
2015-09-22,1.2,c2,p2

我会这样做:

# Read Dataframe
df = pd.read_csv('product.csv')

然后我添加所需的列:

df['minprice'] = df.groupby(['city','product'])['price'].transform(min)

返回:

         date  price city product  minprice
0 2015-09-21 1.5 c1 p1 1.2
1 2015-09-21 1.2 c1 p1 1.2
2 2015-09-21 0.5 c1 p2 0.3
3 2015-09-21 0.3 c1 p2 0.3
4 2015-09-22 0.6 c2 p2 0.6
5 2015-09-22 1.2 c2 p2 0.6

希望对您有所帮助。

关于python - Pandas:使用其他列子组中的值创建新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32697397/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com