python - 使用列和行 python pandas
问题描述
我正在尝试从熊猫数据框中收集数据。在屏幕截图中,您将看到如何构建数据库的一部分。
所以现在我想分析相同的其他列。对于相同的 hhid,我想计算离开时间。我想选择第一个“从家”行并读取起始值。那么对于相同的 hhid,这不应该再次被覆盖。之后,我想要最后一个“回家”条目的最终值,然后计算它们之间的差异。我试图实现这一点,但大多数时候从家里的读取起始值被覆盖并且差异不一样。
这是我的日常:
wid=1
for i in range(0,len(dataframe)):
if (i+1 >= len(dataframe)):
break
if (
dataframe['hhid'].values[i] == dataframe['hhid'].values[i+1] or
dataframe['hhid'].values[i] == dataframe['hhid'].values[i-1]
):
if (
dataframe['w01'].values[i] == 'from Hause' and
wid >= dataframe['wid'].values[i]
):
bla = dataframe['wid'].values[i]
start = dataframe['st_std'].values[i]
print('start',start)
wid = dataframe['wid'].values[i]
if (
dataframe['w04'].values[i] == 'to Hause'
):
end = dataframe['en_std'].values[i]
print('end',end)
dataframe['awaytime'].values[i]= (end-start)
if end-start < 0:
dataframe['awaytime'].values[i]= (start-end)+1
else:
continue
if(dataframe['hhid'].values[i] != dataframe['hhid'].values[i+1]):
if (i+1 >= len(dataframe)):
break
wid=dataframe['wid'].values[i+1]
return dataframe
任何想法如何正确地做到这一点?
编辑
excel格式的数据样本。不幸的是,我不允许上传完整的数据集: https ://www.dropbox.com/s/af3wb7fcsqhukvz/Export_db_awaytime.xlsx?dl=0
解决方案
我想我解决了这个问题。我添加了一个计数器来保存来自家的第一个值。我得到的值很好。
仅供参考代码:
counter=0
test_counter=0
from_home=0
for i in range(0,len(dataframe)):
if (i+1 >= len(dataframe)):
break
"""Check for same hhid"""
if (
dataframe['hhid'].values[i] == dataframe['hhid'].values[i+1] or
dataframe['hhid'].values[i] == dataframe['hhid'].values[i-1]
):
"""Check for first departure"""
if (
dataframe['w01'].values[i] == 'from home' and
counter<=test_counter
):
start = dataframe['st_std'].values[i]
#print('start',start)
from_home=1
counter+=1
"""Check way home"""
if (
dataframe['w04'].values[i] == 'to home' and
from_home==1
):
end = dataframe['en_std'].values[i]
dataframe['awaytime'].values[i]= (end-start)
if end-start < 0:
dataframe['awaytime].values[i]= (start-end)+1
"""Check when another hhid is next entry"""
if(dataframe['hhid'].values[i] != dataframe['hhid'].values[i+1]):
if (i+1 >= len(dataframe)):
break
counter=0
from_home=0
推荐阅读
- c# - 在 Net Core 中使用 Microsoft Graph Api 将用户添加为组成员
- azure-devops - 到 Prod 的发布管道只是排队,没有开始部署 - devops Azure
- linux - 使用linux(sed,awk)从文件b / w添加两个特定行号的文本?
- react-native - 使用 react-native-video 一次播放一个视频
- r - Shiny:单独和全局插入/删除 UI
- recursion - 如何在 vuex 中进行递归动作/突变
- javascript - 如何创建反映嵌套 HTML 表单的嵌套 JSON 对象?
- powershell - 将多行正文添加到 PowerShell 电子邮件
- java - Java Flux vs. Observable/BehaviorSubject
- swift - Admob 奖励广告仅加载一次(用于新实现 - 迁移代码)并生成错误(“..ad 对象已被使用。”)