我有以下csv文件:
name,shortname,description,class,child.1,child.2,child.3, ... child.300
Audi AG, Audi,, vehicle,A3,A4,A5 ... Awhatever
.
.
.
Mercedes Benz, MB,, vehicle,C,A,B ... GLEwhatever
因此,有多行多列。
我想每行仅打印子列,如下所示:
Audi:
A3
A4
A5
...
Awhatever
.
.
.
Mercedes Benz:
C
A
B
...
GLEwhatever
到目前为止,我已经尝试在Python中使用iloc
方法,如下所示,但无法正常工作。
cars = pd.read_csv("cars.csv")
df = pd.DataFrame(cars)
for index, row in df.iterrows():
print(row[0], (df.iloc[1, 4:300]))
我检查了loc
和iloc
的一些教程,但这对我来说对于初学者来说非常复杂,所以有没有其他选择可以达到我想要的结果?
答案 0 :(得分:1)
有两种方法可以执行此操作-取决于您希望输出的外观到底是什么:
for row in df.iterrows():
print(row[1][0])
print(row[1][4:])
输出:
Audi AG
child.1 A3
child.2 A4
child.3 A5
Name: 0, dtype: object
Mercedes Benz
child.1 C
child.2 A
child.3 B
Name: 1, dtype: object
方法2:
for row in df.iterrows():
print(row[1][0])
for c, v in row[1][4:].items():
print(f"- {c}:{v}")
输出:
Audi AG
- child.1:A3
- child.2:A4
- child.3:A5
Mercedes Benz
- child.1:C
- child.2:A
- child.3:B
如果每辆车同时具有模型和颜色,则可以执行以下操作:
for row in df.iterrows():
print(row[1][0])
items = list(row[1].items())
for inx in range(4, len(row[1]), 2):
car = items[inx]
print(f"- {car[0]}: {car[1]}")
color = items[inx+1]
print(f" - color: {color[1]}")
输出为:
Audi AG
- child.1: A3
- color: red
- child.2: A4
- color: blue
- child.3: A5
- color: black
Mercedes Benz
- child.1: C
- color: green
- child.2: A
- color: yellow
- child.3: B
- color: white