我很难理解这个
我有一个常规的df(与字典中的空df相同的列)和一个空df,它是字典中的一个值(字典中的键是基于某些输入的变量,因此可以只是一个键/值对或多个键/值对-认为这可能是相关的)。字典结构本质上是:
{key: [[Empty DataFrame
Columns: [list of columns]
Index: []]]}
我使用以下代码来尝试添加数据:
dict[key].append(df, ignore_index=True)
我得到的错误是:
temp_dict[product_match].append(regular_df, ignore_index=True)
TypeError: append() takes no keyword arguments
这个错误是由于我错误地指定了我试图将df附加到的值(就像我试图将df附加到键而不是这里)或其他东西吗?
您的字典在键处包含一个列表列表,我们可以在显示的输出中看到:
{key: [[Empty DataFrame Columns: [list of columns] Index: []]]}
# ^^ list starts ^^ list ends
因此dict[key].append
为主叫列表。@nandoquintana提到的追加
添加到DataFrame访问列表中的特定元素:
temp_dict[product_match][0][0].append(df, ignore_index=True)
注意append
没有inplace
版本。append
always生成一个新的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}
或者如果需要list of list:
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]]}
也许你在dict[key]
有一个空列表?
请记住"list方法(不像Pandas的dataframe方法)只接收一个参数:https://docs.python.org/3/tutorial/datastructures.html#more-on-listshttps://pandas.pydata.org/docs/reference/api/pandas.DataFrame.append.html