谢谢你留下时光匆匆
Pandas 列名变量生成辅助工具

在用Python Pandas处理数据时候,我们经常会去做选取某一列的操作(e.g. df['some_col'])。这段代码需要敲击引号然后输入字符串,如果列名为中文,还需要切换输入法,非常影响开发的流畅性。

一个解决办法是,将 DataFrame 中的每一列的列名赋值成一个变量,在需要输入列名时,只需要输入对应的变量即可,借助于编辑器的代码补全功能,可以让选取列代码的开发更为便捷、流畅。

自己写了一个小工具,用于列名赋值到python变量的代码生成。只需将列名的list(可以用df.columns.to_list()生成)传入左边的输入框,点击转换即可生成相应的代码。如:

例子 df 是下面这一张表

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
>>> df

   姓名  体测成绩
0  张三    99
1  李四    80
2  王五    74
3  小红    95

>>> df.columns.to_list()

['姓名', '体测成绩']

用该工具生成的辅助代码如下:

1
2
xingming = '姓名'
tice_chengji = '体测成绩'

这个工具使用Python写的,利用jieba进行中文分词,再用pypinyin 包进行中文到英文拼音的转换,最后用pywebio完成前端UI的展示。

这个小工具的代码如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
from pypinyin import lazy_pinyin
from pywebio.pin import *
from pywebio.output import *
from pywebio import *
import pyclip
import jieba

def get_chinese_pinyin_field(text):
    return "_".join("".join(lazy_pinyin(cut_word)) for cut_word in jieba.cut(text))

def transform(input_text):
    input_list = eval(input_text)
    return "\n".join(f"{get_chinese_pinyin_field(text)} = '{text}'" for text in input_list)

def copy():
    pyclip.copy(pin.pin['output'])
    put_text("copied")

def main():
    put_textarea("input", label="input(放一个string list)")
    put_button("转换", onclick=lambda: pin_update("output", value=transform(pin.pin["input"])), color="light")
    put_textarea("output", label="output", rows=15)
    put_button("copy", onclick=copy, color="light")

if __name__ == '__main__':
    start_server(main, port=1234)