您的字典在键处包含一个列表列表,我们可以在显示的输出中看到这一点:
{key: [[Empty DataFrame Columns: [list of columns] Index: []]]}
# ^^ list starts ^^ list ends
出于这个原因,dict[key].append 正在调用 list.append,正如 @nandoquintana 所述。
要附加到 DataFrame 访问列表中的特定元素:
temp_dict[product_match][0][0].append(df, ignore_index=True)
注意没有inplace 版本的append。 append 总是产生一个新的DataFrame:
示例程序:
import numpy as np
import pandas as pd
temp_dict = {
'key': [[pd.DataFrame()]]
}
product_match = 'key'
np.random.seed(5)
df = pd.DataFrame(np.random.randint(0, 100, (5, 4)))
temp_dict[product_match][0][0].append(df, ignore_index=True)
print(temp_dict)
输出(temp_dict 未更新):
{'key': [[Empty DataFrame
Columns: []
Index: []]]}
需要将新的 DataFrame 分配到正确的位置。
一个新变量:
some_new_variable = temp_dict[product_match][0][0].append(df, ignore_index=True)
some_new_variable
0 1 2 3
0 99 78 61 16
1 73 8 62 27
2 30 80 7 76
3 15 53 80 27
4 44 77 75 65
或返回列表:
temp_dict[product_match][0][0] = (
temp_dict[product_match][0][0].append(df, ignore_index=True)
)
temp_dict
{'key': [[ 0 1 2 3
0 99 78 61 16
1 73 8 62 27
2 30 80 7 76
3 15 53 80 27
4 44 77 75 65]]}
假设 DataFrame 实际上是一个空的 DataFrame,append 是不必要的,因为只需将键处的值更新为 DataFrame 可以工作:
temp_dict[product_match] = df
temp_dict
{'key': 0 1 2 3
0 99 78 61 16
1 73 8 62 27
2 30 80 7 76
3 15 53 80 27
4 44 77 75 65}
或者如果需要列表列表:
temp_dict[product_match] = [[df]]
temp_dict
{'key': [[ 0 1 2 3
0 99 78 61 16
1 73 8 62 27
2 30 80 7 76
3 15 53 80 27
4 44 77 75 65]]}