我知道通常熊猫的itertuples()将返回每个值,包括列名,如下所示:
ab=pd.DataFrame(np.random.random([3,3]),columns=['hi','low','med'])
for i in ab.itertuples():
print(i)
Run Code Online (Sandbox Code Playgroud)
输出如下:
Pandas(Index=0, hi=0.05421443, low=0.2456833, med=0.491185)
Pandas(Index=1, hi=0.28670429, low=0.5828551, med=0.279305)
Pandas(Index=2, hi=0.53869406, low=0.3427290, med=0.750075)
Run Code Online (Sandbox Code Playgroud)
但是,我不知道为什么它不按我的另一组代码显示如下所示的列:
us qqq equity us spy equity
date
2017-06-19 0.0 1.0
2017-06-20 0.0 -1.0
2017-06-21 0.0 0.0
2017-06-22 0.0 0.0
2017-06-23 1.0 0.0
2017-06-26 0.0 0.0
2017-06-27 -1.0 0.0
2017-06-28 1.0 0.0
2017-06-29 -1.0 0.0
2017-06-30 0.0 0.0
Run Code Online (Sandbox Code Playgroud)
上面是一个以时间戳记为索引,float64为列表中的值以及字符串['us qqq equity,'us spy equity']列表的Pandas Dataframe。
当我这样做时:
for row in data.itertuples():
print (row)
Run Code Online (Sandbox Code Playgroud)
它将列显示为_1和_2,如下所示:
Pandas(Index=Timestamp('2017-06-19 00:00:00'), _1=0.0, _2=1.0)
Pandas(Index=Timestamp('2017-06-20 00:00:00'), _1=0.0, _2=-1.0) …Run Code Online (Sandbox Code Playgroud) 我创建了一个填充 np.nan 的单列数据框,如下所示:
df=pd.DataFrame([np.nan]*5)
0
0 NaN
1 NaN
2 NaN
3 NaN
4 NaN
Run Code Online (Sandbox Code Playgroud)
当我尝试查找 的数据类型df.iloc[0,0](即 NaN)时,该值返回numpy.float64
我知道该pd.isnull函数可以为这些 np.NaN 正确返回 true。但是我不明白为什么数据类型是float?
我对Panda的Dataframe很新,如果有人可以通过以下示例简要讨论DataFrame的可变性,我将非常感激:
d1=pd.date_range('1/1/2016',periods=10,freq='w')
col1=['open','high','low','close']
list1=np.random.rand(10,4)
df1=pd.DataFrame(list1,d1,col1)
Run Code Online (Sandbox Code Playgroud)
据我了解,目前df1是对df对象的引用.
如果我将df1或df1(例如df1.iloc[2:3,1:2])的切片作为新df的输入传递(例如df2=pd.DataFrame(df1)),df2是否会返回一个新的dataframe实例,或者仍然指的是使df1暴露给df2的df1?
关于DataFrame的可变性,我应该注意的任何其他观点都将非常感激.
我有一个DataFrame如下:
a b c d
0 0.140603 0.622511 0.936006 0.384274
1 0.246792 0.961605 0.866785 0.544677
2 0.710089 0.057486 0.531215 0.243285
Run Code Online (Sandbox Code Playgroud)
我想用itertuples()迭代df并打印每行的值和列名.目前我知道以下方法:
df=pd.DataFrame(np.random.rand(3,4),columns=['a','b','c','d'])
for item in df.itertuples():
print(item)
Run Code Online (Sandbox Code Playgroud)
输出是:
Pandas(Index=0, a=0.55464273035498401, b=0.50784779485386233, c=0.55866384351761911, d=0.35969591433338755)
Pandas(Index=1, a=0.60682158587529356, b=0.37571390304543184,
c=0.13566419305411737, d=0.55807909125502775)
Pandas(Index=2, a=0.73260693374584385, b=0.59246381839030349, c=0.92102184020347211, d=0.029942550647279687)
Run Code Online (Sandbox Code Playgroud)
题:
1)当类型(df)返回Pandas()时,我认为每次迭代的返回数据是一个元组(由函数名建议)?
2)当循环遍历每行的项目时,提取'a','b','c','d'作为列名的最佳方法是什么?