我有下面的数据框,其中我试图删除第一列,这是在pandas数据框/系列中分配的默认列。我该如何摆脱呢?
实际结果应该没有第一列为“ 0”的结果。 我已经尝试过使用带有drop的reset索引,但是没有任何效果。
这是我的代码,它发送带有数据帧输出的邮件。
def send_email(index):
fromaddr = ""
toaddr = ""
msg = MIMEMultipart()
msg['From'] = fromaddr
msg['To'] = toaddr
msg['Subject'] = "Timestamp Alarm"
df1 = df.iloc[index,1:]
new = df1
body = """\
<html>
<head></head>
<body>
{0}
</body>
</html>
""".format(pd.DataFrame(new).T.to_html())
part1 = MIMEText(body,'html')
msg.attach(part1)
server = smtplib.SMTP("smtp.gmail.com", 587)
server.starttls()
server.login('***', '**')
server.sendmail('','',msg.as_string())
server.quit()
答案 0 :(得分:0)
请参阅以下内容并与您的问题有关。
import pandas as pd
d = {'Field_A': 'FA', 'Field_B': 'FB', 'Field_C': 'FC'}
df = pd.DataFrame({0: d}).T
df
输出:
Field_A Field_B Field_C
0 FA FB FC
如果只需要Field_A
,Field_B
,Field_C
列的单元格值,则只需调用df.loc[0]
。在您的情况下,您需要更改定义变量new
的行。
new = df.loc[index]
答案 1 :(得分:0)
查看 to_html 文档。
此功能包含a.o。 index 参数(默认为 True ), 决定是否生成索引列。
也许您应该使用 False 值传递它。
另一个选项:
将DataFrame打印(然后发送)为“普通”文本。
要隐藏索引列,请同时传递 index = False :
print(df.to_string(index=False))