Pandas遍历DataFrame行时无法实现预期格式化输出求助
解决Pandas遍历行时Stream列右对齐的问题
我明白你想让输出里的Stream列实现右对齐,之前的尝试没生效是因为你虽然调用了rjust()方法,但没有把处理后的结果放到print语句里——你还是输出了原始的Stream值。别担心,我给你两个简单的解决办法:
方法1:直接在循环中修正输出逻辑
只需要修改循环里的打印语句,把Stream列的值用rjust()处理后再输出就行:
import pandas as pd data = {'Name': ['Ankit', 'Amit', 'Aishwarya', 'Priyanka'], 'Age': [21, 19, 20, 18], 'Stream': ['Math', 'Commerce', 'Arts', 'Biology'], 'Percentage': [88, 92, 95, 70]} df = pd.DataFrame(data, columns = ['Name', 'Age', 'Stream', 'Percentage']) print("Given Dataframe :\n", df) print("\nIterating over rows using index attribute :\n") # 这里修改print语句,加入rjust处理逻辑 for ind in df.index: print(df['Name'][ind], df['Stream'][ind].rjust(15, " "))
运行这段代码后,你就能得到预期的输出:
Ankit Math Amit Commerce Aishwarya Arts Priyanka Biology
方法2:用Pandas风格的方式处理(更简洁)
如果你不想手动写循环,也可以用apply()方法结合格式化字符串来实现,更符合Pandas的使用习惯:
import pandas as pd data = {'Name': ['Ankit', 'Amit', 'Aishwarya', 'Priyanka'], 'Age': [21, 19, 20, 18], 'Stream': ['Math', 'Commerce', 'Arts', 'Biology'], 'Percentage': [88, 92, 95, 70]} df = pd.DataFrame(data, columns = ['Name', 'Age', 'Stream', 'Percentage']) print("Given Dataframe :\n", df) print("\nIterating over rows using index attribute :\n") # 用apply逐行处理并打印 df.apply(lambda row: print(f"{row['Name']} {row['Stream'].rjust(15)}"), axis=1)
这个方法同样能得到你想要的右对齐效果,代码也更简洁。
内容的提问来源于stack exchange,提问作者anurag pandey
相关产品推荐
相关产品推荐

