[英]pandas dataframe update values using groupby
我有一個帶有 ID 和日期的 Pandas 數據框:
data = [{'id': 'a', 'date': 1, 'value':3}, {'id':'b', 'date': 1, 'value': 30},
{'id': 'a', 'date': 2, 'value':5}, {'id':'b', 'date': 2, 'value': 20}]
test_df = pd.DataFrame(data)
我想遍歷每個日期並使用 value 列進行一些計算以獲得一個 adjust_value 列:
for idx, daily_df in test_df.groupby('date'):
daily_df['adj_value'] = some functions
我有兩個問題:
A value is trying to be set on a copy of a slice from a DataFrame. Try using .loc[row_indexer,col_indexer] = value instead
A value is trying to be set on a copy of a slice from a DataFrame. Try using .loc[row_indexer,col_indexer] = value instead
無需遍歷groupby()
結果。 NamedAgg()
做你想做的事。 我已經合成了一個函數作為示例,通常我會使用內置函數或lambda
函數
data = [{'id': 'a', 'date': 1, 'value':3}, {'id':'b', 'date': 1, 'value': 30},
{'id': 'a', 'date': 2, 'value':5}, {'id':'b', 'date': 2, 'value': 20}]
test_df = pd.DataFrame(data)
def myfunc(x):
x = list(x)
if len(x)>1: return x[0] * x[1]
else: return x[0]
test_df.groupby("date").agg(adj_value=pd.NamedAgg(column="value", aggfunc=myfunc))
輸出
adj_value
date
1 90
2 100
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.