之所以如此复杂,是因为这些类型的 ASCII 表在设计时并未真正考虑到数据传输。它们的真正功能是以视觉上令人愉悦的方式描绘数据。
这并不意味着不能用它来转移到 pandas 中!让我们从.read_clipboard()
:
df = pd.read_clipboard(sep='|').iloc[1:,1:-1]
我们定义的不是使用逗号作为(默认)分隔符|
作为分隔符。
The .iloc[1:,1:-1]
去掉第一行(-----------
)和第一列和最后一列:因为尾随|
在每行的开头和结尾pandas
在那里看到一个“空”列。
现在剩下的就是从列名和值中去除空格:
stripped_columns = []
for column_name in df.columns:
df[column_name] = df[column_name].str.strip()
stripped_columns.append(column_name.strip())
df.columns = stripped_columns
如果你想要Age Category
成为你的索引:
df.set_index('Age Category', inplace=True)
我要做的最后一步是确保所有列现在实际上保存的是数字而不是字符串:
df = df.astype('int')
导致:
<class 'pandas.core.frame.DataFrame'>
Index: 6 entries, 21-26 to 46-51
Data columns (total 4 columns):
A 6 non-null int64
B 6 non-null int64
C 6 non-null int64
D 6 non-null int64
dtypes: int64(4)
memory usage: 400.0+ bytes
我不确定您从剪贴板中读取它的原因是什么。更优雅的解决方案可能是将其粘贴到.csv
归档并使用更高级的功能.read_csv() https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html必须提供。然而,必要的转变将保持不变。