如何将pandas数据帧转换为.tde?

时间:2015-02-23 22:56:11

标签: python pandas extract tableau

我正在使用Pandas数据帧。

我已经加载了所有数据以及我想要完成的所有操作。

我正在寻找可以获取此数据帧的特定代码行,并将行复制到我已定义为.tde提取的一部分的表中。

如果有人有这方面的经验,我很乐意看到你写的是什么。有一些在线使用带有python的.csvreader的示例,它循环遍历行并在读取时添加它们但是我找不到如何获取存储在数据帧中的数据并将其应用于定义的表的任何示例作为摘录的一部分。

编辑:所以此刻我试图逐行遍历每一列并添加每个特定的单元格。出于某种原因,我被抛出了这个错误。

colnames = all_data.columns

for r in range(0, len(all_data)):
newrow = tde.Row(tableDef)
for c in range(0, len(colnames)):
    if str(colnames[c]) == 'Run Date':
        newrow.setCharString(c, all_data.iloc[r,c])
    elif str(colnames[c]) == 'Sales Order':
        newrow.setCharString(c, all_data.iloc[r,c])  
    else:
        newrow.setNull(c)

table.insert(newrow)

TypeError                                 Traceback (most recent call last)
<ipython-input-27-db8a798ec66b> in <module>()
      5             newrow.setCharString(c, all_data.iloc[r,c])
      6         elif str(colnames[c]) == 'Sales Order':
----> 7             newrow.setCharString(c, all_data.iloc[r,c])
      8         else:
      9             newrow.setNull(c)

    C:\Anaconda\lib\site-packages\dataextract\Base.pyc in setCharString(self, columnNumber, value)
    335             self._handle
    336           , c_int(columnNumber)
--> 337           , c_char_p(value)
    338         )
    339 

TypeError: string or integer address expected instead of numpy.int64 instance

2 个答案:

答案 0 :(得分:2)

Tableau提供了用于创建数据提取(TDE)文件的API - DETAILSDOWNLOAD

使用API​​的Python驱动程序,您可以轻松转换数据帧。

例如,请参阅this post了解如何将数据转换为TDE格式

答案 1 :(得分:0)

根据你的追溯,问题是你试图插入numpy.int64而不是&#34;常规&#34;整数。

例如,要在插入之前转换为常规整数,请使用int()函数:

int(numpyint)

还需要转换其他数据类型,因此请使用str(),unicode()或float()函数。

source