在Python中,我有一个类似于以下的pandas DataFrame:
Item | shop1 | shop2 | shop3 | Category
------------------------------------
Shoes| 45 | 50 | 53 | Clothes
TV | 200 | 300 | 250 | Technology
Book | 20 | 17 | 21 | Books
phone| 300 | 350 | 400 | Technology
Run Code Online (Sandbox Code Playgroud)
shop1,shop2和shop3是不同商店中每件商品的成本.现在,我需要在一些数据清理后返回一个DataFrame,如下所示:
Category (index)| size| sum| mean | std
----------------------------------------
Run Code Online (Sandbox Code Playgroud)
其中size是每个Category中的项目数和sum,mean和std与应用于3个商店的相同功能相关.如何使用split-apply-combine模式(groupby,aggregate,apply,...)执行这些操作?
有人可以帮我吗?我对这个疯狂了......谢谢!
我遵循简单的DataFrame - df:
0
0 1
1 2
2 3
Run Code Online (Sandbox Code Playgroud)
一旦我尝试创建新列并为它们分配一些值,如下例所示:
Run Code Online (Sandbox Code Playgroud)df['col2', 'col3'] = [(2,3), (2,3), (2,3)]
我有以下结构
0 (col2, col3)
0 1 (2, 3)
1 2 (2, 3)
2 3 (2, 3)
Run Code Online (Sandbox Code Playgroud)
但是,我正在寻找一种方法来获取:
0 col2, col3
0 1 2, 3
1 2 2, 3
2 3 2, 3
Run Code Online (Sandbox Code Playgroud) 我有一个带有列Longitude和的pandas数据框Latitude.我想X和Y他们相处.utm调用from_latlon中有一个函数可以执行此操作.它接收Latitude和Longitude并给出[X,Y].这是我做的:
def get_X(row):
return utm.from_latlon(row['Latitude'], row['Longitude'])[0]
def get_Y(row):
return utm.from_latlon(row['Latitude'], row['Longitude'])[1]
df['X'] = df.apply(get_X, axis=1)
df['Y'] = df.apply(get_Y, axis=1)
Run Code Online (Sandbox Code Playgroud)
我想定义一个函数get_XY并from_latlon只应用一次来节省时间.我看了一下这里,这里和这里,但我找不到用一个apply函数制作两列的方法.谢谢.