我有一个包含地名,分数A和分数B的csv文件,我想提取每个位置的分数A和分数B值。在大熊猫的帮助下,我阅读了csv并将其存储在如下所示的DF中
import pandas as pd
csvdf = pd.read_csv("E:\redsa.csv")
print(csvdf)
我得到以下输出
Place ScoreA ScoreB
0 Place 1 108 775
1 Place 2 109 781
我想获取每个位置的得分A和得分B值并将它们存储在单独的变量中,我为此在下面尝试了
for row in csvdf.iterrows():
print(csvdf['ScoreA'],csvdf['ScoreB'])
我的输出低于输出
0 108
1 109
Name: ScoreA, dtype: float64 0 775
1 781
Name: ScoreB, dtype: float64
0 108
1 109
Name: ScoreA, dtype: float64 0 775
1 781
Name: ScoreB, dtype: float64
我想遍历每个地方并获取ScoreA和ScoreB并将它们存储在各自的变量中,我该怎么做
答案 0 :(得分:1)
我相信您需要apply
和axis=1
才能逐行循环,因为iterrows is best avoid for poor performance,如果可能的话:
def func(x):
print (x['ScoreA'])
print (x['ScoreB'])
#code
return x
df = csvdf.apply(func, axis=1)
print (df)
您可以通过read_csv
中的参数Place
从第一index_col
列创建索引,然后选择列-输出为Series
:
csvdf = pd.read_csv("E:\redsa.csv", index_col=[0])
print (csvdf['ScoreA'])
Place
Place 1 108
Place 2 109
Name: ScoreA, dtype: int64
print (csvdf['ScoreB'])
Place
Place 1 775
Place 2 781
Name: ScoreB, dtype: int64
或按子集选择-输出为2列DataFrame:
csvdf = pd.read_csv("E:\redsa.csv")
print (csvdf[['Place','ScoreA']])
Place ScoreA
0 Place 1 108
1 Place 2 109
print (csvdf[['Place','ScoreB']])
Place ScoreB
0 Place 1 775
1 Place 2 781