我正在寻找从具有重复索引名称(在下面的示例中为s1和s2)的CSV文件创建Python数据框的最简单解决方案。
以下是CSV文件的外观:
var1 var2 var3
unit x 8 4 12
temp y -1 -4 -3
time
s1 9 12 11
s2 12 15 7
month
s1 1 3 12
s2 2 4 6
Python数据框应如下所示:
var1 var2 var3
unit x 8 4 12
temp y -1 -4 -3
time s1 9 12 11
time s2 12 15 7
month s1 1 3 12
month s2 2 4 6
执行此操作的最佳方法是什么?
答案 0 :(得分:3)
使用:
#convert index to Series
s = df.index.to_series()
#identify duplicated values
m = s.duplicated(keep=False)
#replace dupes by NaNs and then by forward filling
df.index = np.where(m, s.mask(m).ffill() + ' ' + s.index, s)
#remove only NaNs rows
df = df.dropna(how='all')
print (df)
var1 var2 var3
unit x 8.0 4.0 12.0
temp y -1.0 -4.0 -3.0
time s1 9.0 12.0 11.0
time s2 12.0 15.0 7.0
month s1 1.0 3.0 12.0
month s2 2.0 4.0 6.0
答案 1 :(得分:0)
考虑的数据框
int max_of_four(int a, int b, int c, int d)
{
int max1 = a > b ? a : b;
int max2 = c > d ? c : d;
return (max1 > max2 ? max1 : max2);
}
您可以使用 C D E
A B
a 4 7.0 1.0 5.0
5 3.0 4.0 5.5
b 5 8.0 3.0 3.0
c 4 9.0 5.0 6.0
f 4 3.0 0.0 4.0
删除为False,它可以根据索引级别确定列数,然后在转换后可以将其分配给主索引
df.reset_index
出局:
#converting index to columns
df = df1.reset_index()
# Assigning multilevel index columns to main index
df.index = df[df.columns[0]].astype(str)+' '+df[df.columns[1]].astype(str)
# dropping the indexed columns
df = df.drop(df.columns[[0,1]],axis=1)