我有这样的.csv文件:

Str;  Int; Flt
  A;  123; 0.1
  B;  456; 0.2
  C;  789; 0.3

我想得到这样的DataFrame

   Int; Flt
A; 123; 0.1
B; 456; 0.2
C; 789; 0.3

我是这样读CSV的

df = pd.read_csv('data.csv', index_col=0, sep=";")

问题是我不能用df.loc["A", "Int"]来获得单元格的值. 如果我将Str;从CSV中删除,一切都会正常运行.

因此,我们的 idea 是使用第一行作为行名,使用第一列作为列名.我知道第一个元素不能同时用作列名和行名,有没有办法go 掉这样不明确的值?

推荐答案

您有一个空格问题.

import io
import pandas as pd

fp = io.StringIO('''
Str;  Int; Flt
  A;  123; 0.1
  B;  456; 0.2
  C;  789; 0.3
'''.strip())

df = pd.read_csv(fp, index_col=0, sep=";")

print("Index: ", df.index)
print("Columns: ", df.columns)

# Now look at the whitespace:
print(df.loc['  A','  Int'])

yield 率:

Index:  Index(['  A', '  B', '  C'], dtype='object', name='Str')
Columns:  Index(['  Int', ' Flt'], dtype='object')
123

因此,当您go 掉"Str"时,看起来您正在处理空格问题.

因此,我们应该这样做:

df = pd.read_csv(fp, index_col=0, sep=";" , skipinitialspace=True)

print(df.loc['A','Int'])

Python相关问答推荐

如何最好地处理严重级联的json

两极:滚动组,起始指数由不同列设置

如何将 map 数组组合到pyspark中每列的单个 map 中

回归回溯-2D数组中的单词搜索

使用matplotlib pcolormesh,如何停止从一行绘制的磁贴连接到上下行?

拆分pandas列并创建包含这些拆分值计数的新列

Python中使用时区感知日期时间对象进行时间算术的Incredit

使用新的类型语法正确注释ParamSecdecorator (3.12)

连接两个具有不同标题的收件箱

max_of_three使用First_select、second_select、

删除任何仅包含字符(或不包含其他数字值的邮政编码)的观察

如何避免Chained when/then分配中的Mypy不兼容类型警告?

Vectorize多个头寸的止盈/止盈回溯测试pythonpandas

处理带有间隙(空)的duckDB上的重复副本并有效填充它们

pyscript中的压痕问题

UNIQUE约束失败:customuser. username

计算天数

如何更新pandas DataFrame上列标题的de值?

使用Openpyxl从Excel中的折线图更改图表样式

关于两个表达式的区别