我有一个动态的DataFrame工作正常,但是当没有数据要添加到DataFrame时,我得到一个错误.因此,我需要一个解决方案来创建一个只有列名称的空DataFrame.
现在我有这样的事情:
df = pd.DataFrame(columns=COLUMN_NAMES) # Note that there are now row data inserted.
Run Code Online (Sandbox Code Playgroud)
PS:列名称仍然会出现在DataFrame中非常重要.
但是当我像这样使用它时,我会得到类似的东西:
Index([], dtype='object')
Empty DataFrame
Run Code Online (Sandbox Code Playgroud)
"空DataFrame"部分很好!但我需要仍然显示列,而不是索引.
编辑:
我发现了一件重要的事情:我正在使用Jinja2将此DataFrame转换为PDF,因此我正在调用一种方法,首先将其输出为HTML,如下所示:
df.to_html()
Run Code Online (Sandbox Code Playgroud)
我认为这就是列丢失的地方.
Edit2:总的来说,我遵循了这个例子:http://pbpython.com/pdf-reports.html.css也来自链接.这就是我将数据帧发送到PDF的方法:
env = Environment(loader=FileSystemLoader('.'))
template = env.get_template("pdf_report_template.html")
template_vars = {"my_dataframe": df.to_html()}
html_out = template.render(template_vars)
HTML(string=html_out).write_pdf("my_pdf.pdf", stylesheets=["pdf_report_style.css"])
Run Code Online (Sandbox Code Playgroud)
EDIT3:
如果我在创建后立即打印出数据帧,我会得到以下信息:
[0 rows x 9 columns]
Empty DataFrame
Columns: [column_a, column_b, column_c, column_d,
column_e, column_f, column_g,
column_h, column_i]
Index: []
Run Code Online (Sandbox Code Playgroud)
这似乎是合理的,但如果我打印出template_vars:
'my_dataframe': '<table border="1" class="dataframe">\n <tbody>\n <tr>\n <td>Index([], dtype=\'object\')</td>\n <td>Empty DataFrame</td>\n </tr>\n </tbody>\n</table>'
Run Code Online (Sandbox Code Playgroud)
而且似乎已经缺少了这些列. …
我正在尝试将列标题添加到我已使用Pandas解析为数据帧的csv文件中。
dfTrades = pd.read_csv('pnl1.txt',delim_whitespace=True,header=None,);
dfTrades = dfTrades.drop(dfTrades.columns[[3,4,6,8,10,11,13,15,17,18,25,27,29,32]], axis=1) # Note: zero indexed
dfTrades = dfTrades.set_index([dfTrades.index]);
df = pd.DataFrame(dfTrades,columns=['TradeDate',
'TradeTime',
'CumPnL',
'DailyCumPnL',
'RealisedPnL',
'UnRealisedPnL',
'CCYCCY',
'CCYCCYPnLDaily',
'Position',
'CandleOpen',
'CandleHigh',
'CandleLow',
'CandleClose',
'CandleDir',
'CandleDirSwings',
'TradeAmount',
'Rate',
'PnL/Trade',
'Venue',
'OrderType',
'OrderID'
'Code']);
print df
Run Code Online (Sandbox Code Playgroud)
数据的结构为:
01/10/2015 05:47.3 190 190 -648 838 EURNOK -648 0 0 611 -1137 -648 H 2 -1000000 9.465 -648 INTERNAL IOC 287 AS
Run Code Online (Sandbox Code Playgroud)
熊猫的回报是:
TradeDate TradeTime CumPnL DailyCumPnL RealisedPnL UnRealisedPnL \
0 NaN NaN NaN NaN NaN NaN ... …Run Code Online (Sandbox Code Playgroud) 我想使用 pandas 从 CSV 文件中读取read_csv。CSV 文件没有列名。当我使用 Pandas 读取 CSV 文件时,第一行默认设置为列。但是当我使用时df.columns = ['ID', 'CODE'],第一行不见了。我想添加,而不是替换。
df = pd.read_csv(CSV)
df
a 55000G707270
0 b 5l0000D35270
1 c 5l0000D63630
2 d 5l0000G45630
3 e 5l000G191200
4 f 55000G703240
df.columns=['ID','CODE']
df
ID CODE
0 b 5l0000D35270
1 c 5l0000D63630
2 d 5l0000G45630
3 e 5l000G191200
4 f 55000G703240
Run Code Online (Sandbox Code Playgroud)