小编zar*_*gar的帖子

pandas:用列名称中的最后一个字符替换列中的值

我有一个数据框如下:

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)

python replace multiple-columns pandas

5
推荐指数
1
解决办法
614
查看次数

python:如果列表中的值共享第一个单词,则对它们求和

我有一个清单如下,

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)

但是由于某种原因,最后的总结不起作用,我没有得到我想要的输出

python dictionary sum list

5
推荐指数
1
解决办法
299
查看次数

标签 统计

python ×2

dictionary ×1

list ×1

multiple-columns ×1

pandas ×1

replace ×1

sum ×1