[英]How to print index value, column name, and column data for each row of pandas dataframe?
I have a dataframe that looks like this:我有一个看起来像这样的 dataframe:
dict={'475':['NaN', 0.6, 'NaN', 'NaN', 'NaN', 'NaN'],
'575':['NaN', 'NaN', 0.11, 'NaN', 'NaN', 'NaN'],
'675':[0.223, 'NaN', 'NaN', 0.913, 'NaN', 'NaN'],
'1775':['NaN', 'NaN', 'NaN', 'NaN', 3.46, 'NaN'],
'1875':['NaN', 'NaN', 'NaN', 'NaN', 'NaN', 3.46]
}
df=pd.DataFrame(dict,index=['33', '35', '36', '13', '41', '1222'])
I want to print a statement for each row that says:我想为每一行打印一条语句:
Location index_value
is within column value
of station column name
ie for the first row of the dataframe this would be:位置
index_value
在站column name
的column value
内,即对于 dataframe 的第一行,这将是:
Location 33 is within 0.223km of station 675
位置 33 距离 675 站 0.223 公里以内
I have tried:我努力了:
for index, column in df.iterrows():
print('Farm number ' + str(index) + ' is within 5km of ' + str(column))
but this prints all the index values each time, and I can't see where to go next.但这每次都会打印所有索引值,我看不到接下来 go 的位置。
I'd really appreciate some guidance.我真的很感激一些指导。
You can replace NaN
strings to NaN
missing values and reshape by DataFrame.stack
, so missing values are removed and you can loop with MultiIndex Series
:您可以将
NaN
字符串替换为NaN
缺失值并通过DataFrame.stack
重塑,因此缺失值被删除,您可以使用MultiIndex Series
循环:
for (i, c), v in df.replace('NaN',np.nan).stack().items():
print(f"Location {i} is within {v}km of station {c}")
Location 33 is within 0.223km of station 675
Location 35 is within 0.6km of station 475
Location 36 is within 0.11km of station 575
Location 13 is within 0.913km of station 675
Location 41 is within 3.46km of station 1775
Location 1222 is within 3.46km of station 1875
You can also create DataFrame
:您还可以创建
DataFrame
:
df1 = df.replace('NaN',np.nan).stack().rename_axis(['i','c']).reset_index(name='v')
print (df1)
i c v
0 33 675 0.223
1 35 475 0.600
2 36 575 0.110
3 13 675 0.913
4 41 1775 3.460
5 1222 1875 3.460
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.