У мене є 3 df "s:
df1=pd.DataFrame({"Name":["one","two","three"],"value":[4,5,6]})
df2=pd.DataFrame({"Name":["four","one","three"],"value":[8,6,2]})
df3=pd.DataFrame({"Name":["one","four","six"],"value":[1,1,1]})
Я можу додати один за одним, але я хочу додати всі три кадри даних за один раз і провести аналіз.
Я намагаюся підрахувати ім'я, що міститься в тому, скільки кадрів даних розділено на загальну кількість кадрів даних name present in dataframes/total dataframes
Мій бажаний результат - це
Name value Count
one 11 1
two 5 0.333
three 8 0.666
four 9 0.666
six 1 0.333
Будь ласка, допоможіть, завчасно спасибі!
Відповіді:
1 для відповіді № 1Використання:
dfs = [df1, df2, df3]
df = pd.concat(dfs)
df1 = df.groupby("Name")["value"].agg([("value", "sum"), ("Count", "size")]).reset_index()
df1["Count"] /= len(dfs)
Подібне рішення:
df1 = (pd.concat(dfs)
.groupby("Name")["value"]
.agg([("value", "sum"), ("Count", "size")])
.assign(Count = lambda x: x.Count /len(dfs))
.reset_index())
print (df1)
Name value Count
0 four 9 0.666667
1 one 11 1.000000
2 six 1 0.333333
3 three 8 0.666667
4 two 5 0.333333