Python 如何计算两列数据帧中的真值和假值?
这是我的代码:Python 如何计算两列数据帧中的真值和假值?,python,dataframe,Python,Dataframe,这是我的代码: pizzarequests = pd.Series(open('pizza_requests.txt').read().splitlines()) line = "unix_timestamp_of_request_utc" lines = pizzarequests[pizzarequests.str.contains(line)].str.split(",").str[1] print(lines) dts = pd.to_datetime(lines, unit='s')
pizzarequests = pd.Series(open('pizza_requests.txt').read().splitlines())
line = "unix_timestamp_of_request_utc"
lines = pizzarequests[pizzarequests.str.contains(line)].str.split(",").str[1]
print(lines)
dts = pd.to_datetime(lines, unit='s')
hours = dts.dt.hour
print(hours)
pizzarequests = pd.Series(open('pizza_requests.txt').read().splitlines())
line = "requester_received_pizza"
lines = pizzarequests[pizzarequests.str.contains(line)].str.split(",").str[1]
data = pd.DataFrame({'houroftheday' : hours.values, 'successpizza' : lines})
print(data)
****这给了我:****
houroftheday successpizza
23 18 true
67 2 true
105 14 true
166 23 true
258 20 true
297 1 true
340 2 true
385 22 true
...
304646 21 false
304686 12 false
304746 1 false
304783 3 false
304840 20 false
304907 17 false
304948 1 false
305023 4 false
如何计算仅与真实值相对应的小时数?我想您需要计算
successpizza
为true
的每个小时的发生次数。如果是这样,您将希望使用successpizza
对数据帧进行切片,然后使用groupby
对houroftheday
列进行分组并使用计数进行聚合
看起来您正在从文件中读取真/假值,因此它们是字符串。您需要首先转换它们
data.successpizza = data.successpizza.apply(lambda x: x=='true')
data[data.successpizza].groupby('houroftheday').count()
首先按列
successpizza
中的True
s筛选所有行,然后按列sum
筛选列houroftheday
:
sum_hour = data.loc[data['successpizza'] == 'true', 'houroftheday'].sum()
print (sum_hour)
102
mask = (data['successpizza'] == 'true').astype(int)
out = mask.groupby(data['houroftheday']).sum()
print (out)
houroftheday
1 1
2 2
3 0
12 0
14 1
18 1
20 1
21 0
22 1
23 1
Name: successpizza, dtype: int32
如果需要大小
只需计算真
s,如果使用求和
,真
s是类似1
的过程:
len_hour = (data['successpizza'] == 'true').sum()
print (len_hour)
8
或者如果需要每个小时的时间长度
:
sum_hour = data.loc[data['successpizza'] == 'true', 'houroftheday'].sum()
print (sum_hour)
102
mask = (data['successpizza'] == 'true').astype(int)
out = mask.groupby(data['houroftheday']).sum()
print (out)
houroftheday
1 1
2 2
3 0
12 0
14 1
18 1
20 1
21 0
22 1
23 1
Name: successpizza, dtype: int32
删除跟踪空白的解决方案是:
is看起来像是
成功比萨饼
是一列字符串,值为'true'
和'false'
。当我计算每个字符串的长度时,我需要的是它的长度,它告诉我每小时的真计数为零。可能出了什么问题?如果数据不保密,您能在我的个人资料中将文件pizza_requests.txt
发送到我的电子邮件吗?因为这似乎是一些与数据相关的问题。所以当我做这行时:mask=(data['successpizza']='true')。astype(int),它为数据帧中的所有true和false赋值零。为什么不给trues分配一个呢?我发送了数据,让我知道。非常感谢你的帮助!