【问题标题】:How do I select and print the : values and , values [duplicate]如何选择和打印 : 值和 , 值 [重复]
【发布时间】:2020-06-01 15:37:06
【问题描述】:

如何在 pandas 中选择和打印: 分隔值和, 分隔值。例如,我想从 (Fridge:200:1,1,1,...1) 中分别打印 200 个值和最后打印的 1 的总和:从"

Fridge:200:1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
Washer:500:0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0
Oven:2150:0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0
Microwave:1000:0,0,0,0,0,0,0,0,0.5,0,0,0,0,0,0,0,0,0.5,0,0,0.5,0,0,0
Aircon:2000:0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0
TV:60:1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
TV:60:1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
TV:60:1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
Console:140:1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
Console:140:1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1

【问题讨论】:

  • 您的查询不清楚。
  • 您可以添加一些您尝试过的代码吗?还有所需的输出?
  • 请编辑您的帖子以包含示例输入的预期输出

标签: python python-3.x pandas csv


【解决方案1】:

IIUC,这可能会对您有所帮助:

'''
Fridge:200:1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
Washer:500:0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0
Oven:2150:0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0
Microwave:1000:0,0,0,0,0,0,0,0,0.5,0,0,0,0,0,0,0,0,0.5,0,0,0.5,0,0,0
Aircon:2000:0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0
TV:60:1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
TV:60:1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
TV:60:1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
Console:140:1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
Console:140:1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
'''

import pandas as pd

# for your case, if you are reading the data from csv, 
# use the separator as ":" just like below
df = pd.read_clipboard(sep=":", header=None)

df[3]=df[2].str.split(',',expand=True).astype(float).sum(axis=1)

print(df)

输出:

           0     1                                                  2     3
0     Fridge   200    1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1  24.0
1     Washer   500    0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0   3.0
2       Oven  2150    0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0   2.0
3  Microwave  1000  0,0,0,0,0,0,0,0,0.5,0,0,0,0,0,0,0,0,0.5,0,0,0....   1.5
4     Aircon  2000    0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0  12.0
5         TV    60    1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1  24.0
6         TV    60    1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1  24.0
7         TV    60    1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1  24.0
8    Console   140    1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1  24.0
9    Console   140    1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1  24.0

【讨论】:

  • 不要使用 eval。更好的方法df[2]=df[2].str.split(',',expand=True).astype(float).sum(axis=1)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-12-02
  • 2011-05-15
  • 1970-01-01
相关资源
最近更新 更多