gpt4 book ai didi

python - 用 pandas 解析打印精美的表格数据

转载 作者:行者123 更新时间:2023-12-03 00:10:01 24 4
gpt4 key购买 nike

复制包含不同分隔符、列名中的空格等的表的最佳方法是什么。函数 pd.read_clipboard() 无法自行管理此任务。

示例 1:

| Age Category | A | B  | C  | D |
|--------------|---|----|----|---|
| 21-26 | 2 | 2 | 4 | 1 |
| 26-31 | 7 | 11 | 12 | 5 |
| 31-36 | 3 | 5 | 5 | 2 |
| 36-41 | 2 | 4 | 1 | 7 |
| 41-46 | 0 | 1 | 3 | 2 |
| 46-51 | 0 | 0 | 2 | 3 |

预期结果:

 Age Category  A  B   C   D    
21-26 2 2 4 1
26-31 7 11 12 5
31-36 3 5 5 2
36-41 2 4 1 7
41-46 0 1 3 2
46-51 0 0 2 3

编辑:

示例 2:

+---+---------+--------+
| id|firstName|lastName|
+---+---------+--------+
| 1| Mark| Brown|
| 2| Tom|Anderson|
| 3| Joshua|Peterson|
+---+---------+--------+

预期结果:

   id firstName  lastName
0 1 Mark Brown
1 2 Tom Anderson
2 3 Joshua Peterson

我寻找一种可以应用于最常见表格类型的通用方法。

最佳答案

之所以如此复杂,是因为这些类型的 ASCII 表在设计时并未真正考虑到数据传输。它们的真正功能是以视觉上令人愉悦的方式描绘数据。

这并不意味着不能用它来传输到pandas!让我们从 .read_clipboard() 开始:

df = pd.read_clipboard(sep='|').iloc[1:,1:-1]

我们定义 | 作为分隔符,而不是使用逗号作为(默认)分隔符。

.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

如果您希望年龄类别作为您的索引:

df.set_index('年龄类别', 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()必须提供。然而,必要的转换将保持不变。

关于python - 用 pandas 解析打印精美的表格数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59211661/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com