我想将具有名称的行合并到标题中,并将具有数字的行合并到row0中。我的意思是我想要世田谷,next谷...在大田旁边作为标题,并在row0处提供数字。 这是我尝试过的,但仍然无法正常工作。 预先谢谢你。
df1 = df.iloc[0:1]
df2 = df.iloc[1:3]
答案 0 :(得分:0)
问题是df2的索引与df1的索引不匹配。
因此,concat根据索引将df2行添加为第三行。
在concat解决您的问题之前,请重置df2的索引。
df1 = df.iloc[0:1]
for i in range(1,(len(df.index)),2):
df2 = df.iloc[i:i+2]
df2 = df2.reset_index(drop=True)
df2.columns = list(df2.iloc[0,:])
df2 = df2.drop(0,axis=0)
df2 = df2.reset_index(drop=True)
df1 = pd.concat([df1, df2], axis=1)
df1
答案 1 :(得分:0)
您是否正在寻找类似的东西?
import pandas as pd
df = pd.DataFrame([[1,2,3],['d','e','f'],[4,5,6],['g','h','i'],[7,8,9]],columns=['a','b','c'])
df = df.T
_df = df[0]
for i in df.columns:
if i%2 == 1:
df2 = df[i+1]
df2.index = df[i].values
_df = pd.concat([_df, df2])
_df = _df.reset_index()
df1 = _df.T
df1.columns = _df['index']
df1 = df1[df1.index==0]
df1
还使用df.T
,因为它只是循环df.columns
并拾取奇数行(从您的数据看来!)
输出:
答案 2 :(得分:0)
如果我正确理解了您的问题,则希望数据框仅包含一行(包含所有数字),并且字母/单词将用作数值的相应列名称。
df=pd.read_csv('your_file.csv')
new_df=pd.DataFrame([df.iloc[0].to_list()],columns=df.columns)
for x in range(int((df.shape[0]-1)/2)):
sample_df=pd.DataFrame([df.iloc[2*(x+1)].to_list()],columns=df.iloc[2*x+1].to_list())
new_df=pd.concat([new_df,sample_df ],axis=1)
这应该有效。基本上,我是在循环中创建一个新的数据框并将其压缩为先前的数据框。让我知道您是否遇到任何困难。