目标
我有一个Pandas数据框,如下所示,我想加入command
和value
列,同时还将其转换回原始字符串格式以写入.cfg文件。
数据框架 -df
:
之前加入:
command value
0 bind "0" "slot10"
1 bind "1" "slot1"
2 bind "2" "slot2"
3 bind "3" "slot3"
4 bind "4" "slot4"
5 bind "5" "slot5"
6 bind "6" "slot6"
7 bind "7" "slot7"
8 bind "8" "slot8"
9 bind "9" "slot9"
10 bind "a" "+moveleft"
11 bind "b" "buymenu"
12 bind "d" "+moveright"
之后加入:
0 bind "0" "slot10"
1 bind "1" "slot1"
2 bind "2" "slot2"
3 bind "3" "slot3"
4 bind "4" "slot4"
5 bind "5" "slot5"
6 bind "6" "slot6"
7 bind "7" "slot7"
8 bind "8" "slot8"
9 bind "9" "slot9"
10 bind "a" "+moveleft"
11 bind "b" "buymenu"
12 bind "d" "+moveright"
13 bind "e" "+use"
14 bind "f" "+lookatweapon"
...
etc.
dtype: object
我的尝试 :
我设法使用以下代码合并了两列以获得上面的输出:
df = df['command'].astype(str)+' '+df['value'].astype(str)
但是,这仍然没有帮助将数据帧转换为原始字符串,以便可以将其写入 .cfg 文件。
我也曾尝试使用df.to_string()
,但这似乎没有什么作用
预期产量
我想获取原始字符串输出,就像这样分配在要写入.cfg文件的变量下:
bind "0" "slot10"
bind "1" "slot1"
bind "2" "slot2"
bind "3" "slot3"
bind "4" "slot4"
bind "5" "slot5"
bind "6" "slot6"
bind "7" "slot7"
bind "8" "slot8"
bind "9" "slot9"
bind "a" "+moveleft"
bind "b" "buymenu"
bind "d" "+moveright"
bind "e" "+use"
bind "f" "+lookatweapon"
...
etc.
答案 0 :(得分:2)
致电后
df = df['command'].astype(str)+' '+df['value'].astype(str)
实际上剩下一个Series
对象,因此您可以调用df.tolist()
,然后用换行符将列表中的元素连接起来。像这样
s = df['command'].astype(str)+' '+df['value'].astype(str)
cfg_output = '\n'.join(s.tolist()) # joins each command with a newline
由于在原始配置文件这一行中的读取方式,您将在后一行附加了None值
df = pd.DataFrame(df[0].str.split(' ',1).tolist(),columns = ['command','value'])
无法解释没有值的配置设置。考虑原始conf文件的最后三行
sensitivity "0.9"
cl_teamid_overhead_always 1
host_writeconfig
sensitivity
和cl_teamid_overhead_always
的设置后面跟着值,但是host_writeconfig
没有,因此,当熊猫试图在空白处分割时(该行中不存在) ,第一个值为host_writeconfig
,第二个为None对象。