我有一个76个数据帧的列表,这是一个:
Unnamed: 0 0 1
0 0 Nutriments Quantités
1 1 Protéines 0.4 g
2 2 Lipides 0.2 g
3 3 Glucides 11.3 g
4 4 Eau 86,5
5 5 Fibres 1.2 g
6 6 Vitamine C 18 mg
7 7 Vitamine B1 0.08 mg
8 8 Vitamine B6 0.09 mg
9 9 Magnésium 15 mg
10 10 Potassium 146 mg
11 11 Phosphore 11 mg
我还有另一个数据框:
Manganèse Calcium Eau ... Vitamine B3 Vitamine B9 Magnésium
Nom ...
Abricot NaN NaN NaN ... NaN NaN NaN
Acérola NaN NaN NaN ... NaN NaN NaN
Airelles NaN NaN NaN ... NaN NaN NaN
Ananas NaN NaN NaN ... NaN NaN NaN
Argousier NaN NaN NaN ... NaN NaN NaN
... ... ... ... ... ... ...
Rhubarbe NaN NaN NaN ... NaN NaN NaN
Roquette NaN NaN NaN ... NaN NaN NaN
Tomate NaN NaN NaN ... NaN NaN NaN
Topinambour NaN NaN NaN ... NaN NaN NaN
Yuzu NaN NaN NaN ... NaN NaN NaN
我的数据框列表是蔬菜和水果的列表。例如,数据框“ Pineapple”(法语中的“ Ananas”)必须填写常规数据框。
我需要这样的结果:
Manganèse Calcium Eau ... Vitamine B3 Vitamine B9 Magnésium
Nom ...
Abricot NaN NaN NaN ... NaN NaN NaN
Acérola NaN NaN NaN ... NaN NaN NaN
Airelles NaN NaN NaN ... NaN NaN NaN
Ananas 86,5 NaN ... NaN 15 NaN
Argousier NaN NaN NaN ... NaN NaN NaN
... ... ... ... ... ... ...
Rhubarbe NaN NaN NaN ... NaN NaN NaN
Roquette NaN NaN NaN ... NaN NaN NaN
Tomate NaN NaN NaN ... NaN NaN NaN
Topinambour NaN NaN NaN ... NaN NaN NaN
Yuzu NaN NaN NaN ... NaN NaN NaN
因此,我需要用相应的行填充通用数据框。小数据框的行是常规数据框的列。而且,在所有小型数据框中,“列”的数量没有与普通数据框中相同。
现在我有一个dict = {"apple": df1, "apricot":df2 etc}
。我有:
dicttest["Ananas"]
Out[317]:
Unnamed: 0 0 1
0 0 Eau 88.9 g
1 1 Glucides 9 g
2 2 Lipides 0.15 g
3 3 Protéines 1 g
4 4 Fibres 2 g
5 5 Vitamine A 91 UI
6 6 Vitamine C 240 mg
7 7 Calcium 15 mg
8 8 Energie 25 kcal
9 9 Energie 104.5 kJ
“ Ananas”值中的
。您有满足我需求的解决方案吗?
答案 0 :(得分:1)
这是一种使用pd.concat
和'pivot`的方法:
dfs = []
for k, v in dicttest.items():
v["fruit"] = k
dfs.append(v)
df = pd.concat(dfs, axis=0)
df = df[[2, 3, "fruit"]] # you may have to change the names of the columns 2 and 3,
# based on the column names in your data
df.columns = ["item", "amt", "fruit"]
res = pd.pivot_table(df, index="fruit", columns="item", aggfunc=",".join)
输出为:
amt
item Calcium Eau Energie Fibres Glucides Lipides Protéines Vitamine A Vitamine C
fruit
ananas 15 mg 88.9 g [] 2 g 9 g 0.15 g 1 g 91 UI 240 mg
apricot 12 mg 88.9 g [] 5 g 12 g 0.12 g 3 g 100 UI 180 mg