我有一个数据框如下:
import pandas as pd
df = pd.DataFrame({'sent.1':[0,1,0,1],
'sent.2':[0,1,1,0],
'sent.3':[0,0,0,1],
'sent.4':[1,1,0,1]
})
Run Code Online (Sandbox Code Playgroud)
我试图用列名称中的第五个字符(这是列名称的数字部分)替换非零值,因此输出应该是,
sent.1 sent.2 sent.3 sent.4
0 0 0 0 4
1 1 2 0 4
2 0 2 0 0
3 1 0 3 4
Run Code Online (Sandbox Code Playgroud)
我已经尝试过以下方法,但它不起作用,
print(df.replace(1, pd.Series([i[5] for i in df.columns], [i[5] for i in df.columns])))
Run Code Online (Sandbox Code Playgroud)
但是,当我用列名替换它时,上面的代码有效,所以我不确定哪一部分是错误的。
print(df.replace(1, pd.Series(df.columns, df.columns)))
Run Code Online (Sandbox Code Playgroud) 我有一个清单如下,
flat_list = ['hello,5', 'mellow,4', 'mellow,2', 'yellow,2', 'yellow,7', 'hello,7', 'mellow,7', 'hello,7']
Run Code Online (Sandbox Code Playgroud)
如果它们共享相同的单词,我想获得值的总和,所以输出应该是,
期望的输出:
l = [('hello',19), ('yellow', 9), ('mellow',13)]
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已经尝试过以下操作,
new_list = [v.split(',') for v in flat_list]
d = {}
for key, value in new_list:
if key not in d.keys():
d[key] = [key]
d[key].append(value)
# getting rid of the first key in value lists
val = [val.pop(0) for k,val in d.items()]
# summing up the values
va = [sum([int(x) for x in va]) for ka,va in d.items()]
Run Code Online (Sandbox Code Playgroud)
但是由于某种原因,最后的总结不起作用,我没有得到我想要的输出