繁体   English   中英

第一行到 header 和 pandas

[英]First row to header with pandas

我有以下 pandas dataframe df

import pandas as pd
from io import StringIO
s = '''\
"Unnamed: 0","Unnamed: 1"   
Objet,"Unités vendues"  
Chaise,3
Table,2
Tabouret,1
'''
df = pd.read_csv(StringIO(s))

看起来像:

  Unnamed: 0     Unnamed: 1
0      Objet  Unités vendues
1     Chaise                 3
2      Table                 2
3   Tabouret                 1

我的目标是使第一行成为 header。

我用:

headers = df.iloc[0]
df.columns = [headers]  

但是,“0”出现在索引列名中(这是正常的,因为这个 0 在第一行)。

0          Objet Unités vendues 
1         Chaise              3 
2          Table              2 

我试图以多种方式删除它,但没有任何效果:

这篇文章中的del df.index.name都没有

df.columns.name = None来自这篇文章这篇文章(情况相同)

我怎样才能得到这个预期的 output:

           Objet Unités vendues 
1         Chaise              3 
2          Table              2 

什么对我有用。

代替:

    headers = df.iloc[0]
    df.columns = [headers]

和:

    headers = df.iloc[0].values
    df.columns = headers
    df.drop(index=0, axis=0, inplace=True)

Using.values 将 Series 行中的值作为不包含索引值的列表返回。 重新分配列标题然后按预期工作,没有 0。第 0 行仍然存在,因此应该使用 df.drop 将其删除。

当你首先加载你的表时定义它怎么样?

pd.read_csv('filename', header = 1)

否则我想你可以这样做:

df.drop('0', axis = 1)

将我的数据放在 U 中,将我的列名放在 Un 中,我想出了这个算法。 如果你能缩短它,请这样做。

U = pd.read_csv('U.csv', header = None) #.to_numpy()
Un = pd.read_csv('namesU.csv', header=None).T # Read your names csv, in my case they are in one column
Un = Un.append(U) # append the data U to the names
Un.reset_index(inplace=True, drop=True) # reset the index and drop the old one, so you don't have duplicated indices
Un.columns = [Un.iloc[0]] # take the names from the first row
Un.drop(index=0, inplace=True) # drop the first row
Un.reset_index(inplace=True, drop=True) # Return the index counter to start from 0

另外一个选项:

Un = pd.read_csv('namesY.csv', header=None) # Read your names csv, in my case they are in one column
Un = list( Un[0] ) 
Un = pd.DataFrame(U, columns=[Un])

使用skiprows参数为我完成了这项工作:即skiprows=N其中N = 要跳过的行数(在上面的示例中为 1),因此:

df = pd.read_csv('filename', skiprows=1)

我有以下熊猫数据框df

import pandas as pd
from io import StringIO
s = '''\
"Unnamed: 0","Unnamed: 1"   
Objet,"Unités vendues"  
Chaise,3
Table,2
Tabouret,1
'''
df = pd.read_csv(StringIO(s))

看起来像:

  Unnamed: 0     Unnamed: 1
0      Objet  Unités vendues
1     Chaise                 3
2      Table                 2
3   Tabouret                 1

我的目标是将第一行作为标题。

我用 :

headers = df.iloc[0]
df.columns = [headers]  

但是,“0”出现在索引列名中(这是正常的,因为这个 0 位于第一行)。

0          Objet Unités vendues 
1         Chaise              3 
2          Table              2 

我试图以多种方式删除它,但没有任何效果:

这篇文章中的del df.index.name都没有

df.columns.name = None from this postthis one (这是相同的情况)

我怎么能有这个预期的输出:

           Objet Unités vendues 
1         Chaise              3 
2          Table              2 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM