Python 有人能解释在数据帧上使用循环时的直觉吗?
我想完全理解每一行代码的作用,因为我目前还不是100%确定。代码来自我在PythonProgramming.net上观看的一系列教程 我相信第一个“If”语句是在act_min_wage数据框中添加列,然后重命名它们 “else”语句似乎将索引与新的数据框架act_min_wage连接起来?这就是正在发生的事情吗 为什么我们需要第一个if语句?第二个加入他们就够了吗 非常感谢你的帮助Python 有人能解释在数据帧上使用循环时的直觉吗?,python,pandas,loops,logic,Python,Pandas,Loops,Logic,我想完全理解每一行代码的作用,因为我目前还不是100%确定。代码来自我在PythonProgramming.net上观看的一系列教程 我相信第一个“If”语句是在act_min_wage数据框中添加列,然后重命名它们 “else”语句似乎将索引与新的数据框架act_min_wage连接起来?这就是正在发生的事情吗 为什么我们需要第一个if语句?第二个加入他们就够了吗 非常感谢你的帮助 act_min_wage = pd.DataFrame() for name, group in df.gro
act_min_wage = pd.DataFrame()
for name, group in df.groupby("State"):
if act_min_wage.empty:
act_min_wage = group.set_index("Year")[["Low.2018"]].rename(columns={"Low.2018":name})
else:
act_min_wage = act_min_wage.join(group.set_index("Year")[["Low.2018"]].rename(columns={"Low.2018":name}))
act_min_wage.head()
1) act\u min\u wage=pd.DataFrame()
创建空数据帧
2) 对于名称,df.groupby(“状态”)中的组:
groupby(“State”)-按列“State”对数据帧进行分组,因此在循环中
名称-列“状态”的唯一值
group—df中列“State”值等于当前名称的所有行
(三)
如果新的dataframe act_min_wage为空(仅在第一次迭代时),则将该组放入该组,并将列“Low.2018”重命名为name(df列“State”的唯一值)
(四)
由于act_min_wage不为空,请根据年份值将其与新组联接,默认情况下,它保留联接状态
所以,如果使用语句将空数据框按组替换为索引“Year”。请使用玩具示例尝试以下代码,以便更好地理解所有步骤:
import pandas as pd
from IPython.display import display, HTML
df = pd.DataFrame({'State': ['NY', 'NY', 'C', 'C', 'W'],
'Low.2018': [0, 5, 10, 2, 3],
'Year': [2017, 2018, 2017, 2018, 2017]})
act_min_wage = pd.DataFrame()
for name, group in df.groupby("State"):
print('NEW ITERATION', '\n', 'Group:', '\n', '\t', name)
display(group)
print('\n', 'Current state of act_min_wage')
display(act_min_wage)
print('\n\n')
if act_min_wage.empty:
act_min_wage = group.set_index("Year")[["Low.2018"]].rename(columns={"Low.2018":name})
else:
act_min_wage = act_min_wage.join(group.set_index("Year")[["Low.2018"]].rename(columns={"Low.2018":name}))
print('\n', 'Final state of act_min_wage')
display(act_min_wage)
谢谢你这么全面的解释,它真的为我澄清了这一点。
else:
act_min_wage = act_min_wage.join(group.set_index("Year")[["Low.2018"]].rename(columns={"Low.2018":name}))
import pandas as pd
from IPython.display import display, HTML
df = pd.DataFrame({'State': ['NY', 'NY', 'C', 'C', 'W'],
'Low.2018': [0, 5, 10, 2, 3],
'Year': [2017, 2018, 2017, 2018, 2017]})
act_min_wage = pd.DataFrame()
for name, group in df.groupby("State"):
print('NEW ITERATION', '\n', 'Group:', '\n', '\t', name)
display(group)
print('\n', 'Current state of act_min_wage')
display(act_min_wage)
print('\n\n')
if act_min_wage.empty:
act_min_wage = group.set_index("Year")[["Low.2018"]].rename(columns={"Low.2018":name})
else:
act_min_wage = act_min_wage.join(group.set_index("Year")[["Low.2018"]].rename(columns={"Low.2018":name}))
print('\n', 'Final state of act_min_wage')
display(act_min_wage)