我有一只DataFrame熊猫:
import pandas as pd
inp = [{'c1':10, 'c2':100}, {'c1':11,'c2':110}, {'c1':12,'c2':120}]
df = pd.DataFrame(inp)
print df
Run Code Online (Sandbox Code Playgroud)
输出:
c1 c2
0 10 100
1 11 110
2 12 120
Run Code Online (Sandbox Code Playgroud)
现在我想迭代这个帧的行.对于每一行,我希望能够通过列的名称访问其元素(单元格中的值).例如:
for row in df.rows:
print row['c1'], row['c2']
Run Code Online (Sandbox Code Playgroud)
是否有可能在熊猫中做到这一点?
我发现了类似的问题.但它没有给我我需要的答案.例如,建议使用:
for date, row in df.T.iteritems():
Run Code Online (Sandbox Code Playgroud)
要么
for row in df.iterrows():
Run Code Online (Sandbox Code Playgroud)
但我不明白row对象是什么以及如何使用它.
考虑这个小例子:
data={"X":[1, 2, 3, 4, 5], "Y":[6, 7, 8, 9, 10], "Z": [11, 12, 13, 14, 15])
frame=pd.DataFrame(data,columns=["X","Y","Z"],index=["A","A","A","B","B"])
Run Code Online (Sandbox Code Playgroud)
我想frame和
grouped=frame.groupby(frame.index)
Run Code Online (Sandbox Code Playgroud)
然后我想通过以下方式遍历这些组:
for group in grouped:
Run Code Online (Sandbox Code Playgroud)
但是我坚持下一步:如何将group每个循环中的in 提取为pandas DataFrame,以便对其进行进一步处理?
我有以下数据帧
location tps_inter sess_glob
0 loc1 0 0
1 loc1 79 0
2 loc1 3 0
3 loc1 17 0
4 loc2 0 0
5 loc2 46 0
6 loc3 0 0
Run Code Online (Sandbox Code Playgroud)
我想按位置分组,并为每组的第一行添加1.
location tps_inter sess_glob
0 loc1 0 1
1 loc1 79 0
2 loc1 3 0
3 loc1 17 0
4 loc2 0 1
5 loc2 46 0
6 loc3 0 1
Run Code Online (Sandbox Code Playgroud)
然后对于每个组,我想根据tps_inter的值添加索引.如果tps_inter小于10,则sess_glob应与之前的值相同,如果它大于10,则相同值+ 1.
期望的结果是
location tps_inter sess_glob
0 loc1 0 1
1 loc1 79 2
2 loc1 …Run Code Online (Sandbox Code Playgroud)