pandas ValueError:DataFrame 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/33070148/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all()
提问by Behzat
I try to forward a data to excel but received the subject error.
我尝试将数据转发到 excel,但收到主题错误。
I want to combine some of excel files into one excel file. First I created all_info array in order to collect all data into.
我想将一些excel文件合并成一个excel文件。首先,我创建了 all_info 数组以将所有数据收集到。
all_info = []
After that I read every excel files. Excel files follows; sample1, sample2, and so on.
之后我阅读了每个excel文件。Excel文件如下;样本 1、样本 2 等。
data = pd.read_excel('sample1.xlsx', 'Sheet1')
I add each excel files' data into all_info array with below.
我将每个 excel 文件的数据添加到 all_info 数组中,如下所示。
for i in range(0, len(data)):
all_info.append(data)
After I combine all data within all_info array, I executed below code but received the subject error.
在合并 all_info 数组中的所有数据后,我执行了下面的代码,但收到了主题错误。
df = pd.DataFrame(all_info)
df.to_excel("all_info.xlsx")
You may see error details below.
您可能会在下面看到错误详细信息。
ValueError Traceback (most recent call last)
<ipython-input-85-5bff7d788042> in <module>()
1 df = pd.DataFrame(all_tweets)
----> 2 df.to_excel("all_info.xlsx")
/usr/lib/python2.7/dist-packages/pandas/core/frame.pyc in to_excel(self, excel_writer, sheet_name, na_rep, float_format, cols, header, index, index_label, startrow, startcol, engine, merge_cells)
1202 formatted_cells = formatter.get_formatted_cells()
1203 excel_writer.write_cells(formatted_cells, sheet_name,
-> 1204 startrow=startrow, startcol=startcol)
1205 if need_save:
1206 excel_writer.save()
/usr/lib/python2.7/dist-packages/pandas/io/excel.pyc in write_cells(self, cells, sheet_name, startrow, startcol)
525 colletter = get_column_letter(startcol + cell.col + 1)
526 xcell = wks.cell("%s%s" % (colletter, startrow + cell.row + 1))
--> 527 xcell.value = _conv_value(cell.val)
528 style = None
529 if cell.style:
/usr/lib/pymodules/python2.7/openpyxl/cell.pyc in _set_value(self, value)
339 def _set_value(self, value):
340 """Set the value and infer type and display options."""
--> 341 self.bind_value(value)
342
343 value = property(_get_value, _set_value,
/usr/lib/pymodules/python2.7/openpyxl/cell.pyc in bind_value(self, value)
278 def bind_value(self, value):
279 """Given a value, infer type and display options."""
--> 280 self._data_type = self.data_type_for_value(value)
281 if value is None:
282 self.set_value_explicit('', self.TYPE_NULL)
/usr/lib/pymodules/python2.7/openpyxl/cell.pyc in data_type_for_value(self, value)
260 elif isinstance(value, (datetime.datetime, datetime.date, datetime.time, datetime.timedelta)):
261 data_type = self.TYPE_NUMERIC
--> 262 elif not value:
263 data_type = self.TYPE_STRING
264 elif isinstance(value, basestring) and value[0] == '=':
/usr/lib/python2.7/dist-packages/pandas/core/generic.pyc in __nonzero__(self)
674 raise ValueError("The truth value of a {0} is ambiguous. "
675 "Use a.empty, a.bool(), a.item(), a.any() or a.all()."
--> 676 .format(self.__class__.__name__))
677
678 __bool__ = __nonzero__
ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
回答by user2532323
Do you maybe want to do something like this?
你可能想做这样的事情吗?
fnames = ['sample1.xls', 'sample2.xls']
all_info = [pd.read_excel(f, 'Sheet1') for f in fnames]
df = pd.concat(all_info)
df.to_excel("all_info.xlsx")
Here, all_info is a list of DataFrames, where each elements is holding the different Excel Data. Then they are concatenated into one DataFrame and saved to disk...
在这里,all_info 是一个 DataFrame 列表,其中每个元素都保存着不同的 Excel 数据。然后将它们连接成一个 DataFrame 并保存到磁盘...

