[英]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 post或this one (这是相同的情况)
我怎么能有这个预期的输出:
Objet Unités vendues
1 Chaise 3
2 Table 2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.