Python 数据帧中的ValueError
我的目标是Python 数据帧中的ValueError,python,pandas,Python,Pandas,我的目标是 如果数据框是空的,我需要插入一行,其中包含变量URL的索引->值和列->URL值以及排序列表 如果非空,我需要插入一行,其中包含变量URL的索引->值和列->排序列表 我所做的是。。。我初始化了一个DataFrameself.pd,然后为每一行创建了一个本地DataFrame变量df1,并将其附加到self.df 我的代码: import pandas as pd class Reward_Matrix: def __init__(self): self
- 如果数据框是空的,我需要插入一行,其中包含变量URL的
和索引->值
列->URL值以及排序列表
- 如果非空,我需要插入一行,其中包含变量URL的
和索引->值
列->排序列表
self.pd
,然后为每一行创建了一个本地DataFrame变量df1
,并将其附加到self.df
我的代码:
import pandas as pd
class Reward_Matrix:
def __init__(self):
self.df = pd.DataFrame()
def add(self, URL, webpage_list):
sorted_list = []
check_list = list(self.df.columns.values)
print('check_list: ',check_list)
for i in webpage_list: #to ensure no duplication columns
if i not in check_list:
sorted_list.append(i)
if self.df.empty:
sorted_list.insert(0, URL)
df1 = pd.DataFrame(0,index=[URL], columns=[sorted_list])
else:
df1 = pd.DataFrame(0,index=[URL], columns=[sorted_list])
print(df1)
print('sorted_list: ',sorted_list)
print("length: ",len(df1.columns))
self.df.append(df1)
但我得到了以下错误:
Traceback (most recent call last):
File "...Continuum\anaconda3\lib\site-packages\pandas\core\internals.py", line 4294, in create_block_manager_from_blocks
placement=slice(0, len(axes[0])))]
File "...Continuum\anaconda3\lib\site-packages\pandas\core\internals.py", line 2719, in make_block
return klass(values, ndim=ndim, fastpath=fastpath, placement=placement)
File "...Continuum\anaconda3\lib\site-packages\pandas\core\internals.py", line 115, in __init__
len(self.mgr_locs)))
ValueError: Wrong number of items passed 1, placement implies 450
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "...eclipse-workspace\Crawler\crawl_core\src_main\run.py", line 23, in test_start
test.crawl_run(self.URL)
File "...eclipse-workspace\Crawler\crawl_core\src_main\test_crawl.py", line 42, in crawl_run
self.reward.add(URL, webpage_list)
File "...eclipse-workspace\Crawler\crawl_core\src_main\dynamic_matrix.py", line 21, in add
df1 = pd.DataFrame(0,index=[URL], columns=[sorted_list])
File "...Continuum\anaconda3\lib\site-packages\pandas\core\frame.py", line 352, in __init__
copy=False)
File "...Continuum\anaconda3\lib\site-packages\pandas\core\frame.py", line 483, in _init_ndarray
return create_block_manager_from_blocks([values], [columns, index])
File "...Continuum\anaconda3\lib\site-packages\pandas\core\internals.py", line 4303, in create_block_manager_from_blocks
construction_error(tot_items, blocks[0].shape[1:], axes, e)
File "...Continuum\anaconda3\lib\site-packages\pandas\core\internals.py", line 4280, in construction_error
passed, implied))
ValueError: Shape of passed values is (1, 1), indices imply (450, 1)
我不太熟悉数据帧和熊猫。我犯这个错误已经有一段时间了,当我在StackOverflow中遇到类似的问题时,我感到困惑,因为我不明白我错在哪里了
有人能帮我吗?我想你需要删除
[]
,因为其他人得到嵌套列表:
df1 = pd.DataFrame(0,index=[URL], columns=sorted_list)
样本:
sorted_list = ['a','b','c']
URL = 'url1'
df1 = pd.DataFrame(0,index=[URL], columns=sorted_list)
print (df1)
a b c
url1 0 0 0
df1 = pd.DataFrame(0,index=[URL], columns=[sorted_list])
print (df1)
>ValueError: Shape of passed values is (1, 1), indices imply (3, 1)
@耶斯雷尔!我认为这是正确的。带有索引
URL
和指定列的数据帧df1
。。。索引和列不应该指定为集合吗?而0
->我希望df1
的所有值都是0。有什么不对劲吗?喜欢语法吗?我加上示例,给我一点时间。是的!你是对的!这确实消除了错误。但是现在,当我在self.df.append(df1)
之后打印数据帧时,我得到了一个空的数据帧<代码>空数据帧列:[]索引:[]。不会在这里追加工作吗?不是100%确定,但是返回self.df.append(df1)
应该可以,因为使用而不是python append
可能需要self.df=self.df.append(df1)
-分配backurgh!就这样!谢谢,这就成功了!天啊,我错过了!