Python Pandas添加列名用于stateman

2024-06-26 14:58:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将Semeion Handwritten Digit Data Set作为pandas数据帧导入,但第一行被用作列名。在

df.head()
   0.0000  0.0000.1  0.0000.2  0.0000.3  0.0000.4  0.0000.5  1.0000  1.0000.1  \
0     0.0       0.0       0.0       0.0       0.0       1.0     1.0       1.0   
1     0.0       0.0       0.0       0.0       0.0       0.0     0.0       0.0   
2     0.0       0.0       0.0       0.0       0.0       0.0     1.0       1.0   
3     0.0       0.0       0.0       0.0       0.0       0.0     0.0       0.0   
4     0.0       0.0       0.0       0.0       1.0       1.0     1.0       1.0   

   1.0000.2  1.0000.3 ...   1  0  0.1  0.2  0.3  0.4  0.5  0.6  0.7  0.8  
0       1.0       1.0 ...   1  0    0    0    0    0    0    0    0    0  
1       0.0       1.0 ...   1  0    0    0    0    0    0    0    0    0  
2       1.0       1.0 ...   1  0    0    0    0    0    0    0    0    0  
3       0.0       1.0 ...   1  0    0    0    0    0    0    0    0    0  
4       1.0       1.0 ...   1  0    0    0    0    0    0    0    0    0  

[5 rows x 266 columns]

由于DataFrame有266列,所以我尝试使用lambda和for循环将数字指定为列名。。。。使用以下代码:

^{pr2}$

但是我得到了奇怪的列名,比如:

>>> df.head(2)
   <function <genexpr>.<lambda> at 0x04F4E588>  \
0                                          0.0   
1                                          0.0   

   <function <genexpr>.<lambda> at 0x04F4E618>  \
0                                          0.0   
1                                          0.0   

   <function <genexpr>.<lambda> at 0x04F4E660>  \
0                                          0.0   
1                                          0.0   

如果删除括号,则代码将引发语法错误:

>>> df = pd.read_csv("http://archive.ics.uci.edu/ml/machine-learning-databases/semeion/semeion.data", delimiter = r"\s+",
                names = lambda x: x for x in range(0,266) )
SyntaxError: invalid syntax

有人能告诉我:

1)如何将列名作为数字。。。从0到266

2)如果我得到一个以第一行作为列名的DataFrame,如何在不丢失第一行的情况下向下推并添加新的列名?在

TIA公司


Tags: lambda代码dataframedffordatafunction数字
2条回答

你也可以尝试一下:

my_columns = [range(266)]  

我想您需要参数header=Nonenames=range(266)来设置^{}中列的默认名称:

url = "http://archive.ics.uci.edu/ml/machine-learning-databases/semeion/semeion.data"
df = pd.read_csv(url, sep = r"\s+", header=None)

^{pr2}$

相关问题 更多 >