dataframe列名获取、删除列、创建对应的数据库表

创建于:20201026
修改于:20201026

1. 获取dataframe列名
print("===1:", type(df.columns), df.columns)
print("===2:", type(df.columns.values), df.columns.values)
print("===3:", type(df.columns.values.tolist()), df.columns.values.tolist())
print("===4:", type(df.dtypes), df.dtypes)
print("===5:", type(df.dtypes.index), df.dtypes.index)
===1: <class 'pandas.core.indexes.base.Index'> Index(['cons_no', 'pro_name', 'cons_name'], dtype='object')
===2: <class 'numpy.ndarray'> ['cons_no' 'pro_name' 'cons_name']
===3: <class 'list'> ['cons_no', 'pro_name', 'cons_name']
===4: <class 'pandas.core.series.Series'> cons_no            object
pro_name           object
cons_name          object
===5: <class 'pandas.core.indexes.base.Index'> Index(['cons_no', 'pro_name', 'cons_name'], dtype='object')

df.columns 和 df.dtypes.index输出的结果类型、内容一致。

2. 删除当前dataframe的所有列
df.drop(columns=list(df.columns), axis=1, inplace=True)

list(df.columns)也可以获取dataframe列名。

3. 由dataframe的列名,创建合适的数据库表
table_content = ''
for col in cols_dtypes.index:
    table_content += str(col) + ' ' + str(cols_dtypes[col]).replace('object', 'string, '). \
            replace('int64', 'string, ').replace('float64', 'double, ')
table_content = table_content[:-2]

table_name = OUTPUTTABLE + '_test'
table_condition = "row format delimited fields terminated by ',' lines terminated by '\\n'"

sql = "create table if not exists " + table_name
sql += " (" + table_content + ")"
if table_condition:
    sql += " " + table_condition
sql += ";"
print("====In create_table(), sql is\n", sql)
try:
    self.cursor.execute(sql)
except Exception as e:
    print("In create_table(): Maybe the table exists. \nError is ", e)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值