我有6个不同的数据帧,我想一个接一个追加。
我发现这样做的唯一方法是每次追加2,但我相信必须有更有效的方法来做到这一点。
我也期待在那之后更改索引和标题名称,我也知道如何一个接一个地做,但我也相信还必须有一个有效的方法来做到这一点。
我面临的最后一个问题是如何使用NaN列设置索引,为了set_index,我该如何引用它?
df1
NaN 1 2 3
1 A 17.03 13.41 19.61
7 B 3.42 1.51 5.44
8 C 5.65 2.81 1.89
df2
NaN 1 2 3
1 J 1.60 2.65 1.44
5 H 26.78 27.04 21.06
df3
NaN 1 2 3
1 L 1.20 1.41 2.04
2 M 1.23 1.72 2.47
4 R 66.13 51.49 16.62
5 F -- 46.89 22.35
df4
NaN 1 2 3
1 A 17.03 13.41 19.61
7 B 3.42 1.51 5.44
8 C 5.65 2.81 1.89
df5
NaN 1 2 3
1 J 1.60 2.65 1.44
5 H 26.78 27.04 21.06
df6
NaN 1 2 3
1 L 1.20 1.41 2.04
2 M 1.23 1.72 2.47
4 R 66.13 51.49 16.62
5 F -- 46.89 22.35
答案 0 :(得分:1)
您可以使用concat
,对于选择NaN
列,可以df.columns[0]
与list comprehension
和dfs = [df1,df2, df3, ...]
df = pd.concat([df.set_index(df.columns[0], append=True) for df in dfs])
print (df)
1 2 3
NaN
1 A 17.03 13.41 19.61
7 B 3.42 1.51 5.44
8 C 5.65 2.81 1.89
1 J 1.6 2.65 1.44
5 H 26.78 27.04 21.06
1 L 1.20 1.41 2.04
2 M 1.23 1.72 2.47
4 R 66.13 51.49 16.62
5 F -- 46.89 22.35
使用NaN
:
print (df3.columns)
Index(['NaN', '1', '2', '3'], dtype='object')
dfs = [df1,df2, df3]
df = pd.concat([df.set_index('NaN', append=True) for df in dfs])
print (df)
1 2 3
NaN
1 A 17.03 13.41 19.61
7 B 3.42 1.51 5.44
8 C 5.65 2.81 1.89
1 J 1.6 2.65 1.44
5 H 26.78 27.04 21.06
1 L 1.20 1.41 2.04
2 M 1.23 1.72 2.47
4 R 66.13 51.49 16.62
5 F -- 46.89 22.35
编辑:
似乎np.nan
值可以是字符串:
#converting to `NaN` if necessary
#df1.columns = df1.columns.astype(float)
#df2.columns = df2.columns.astype(float)
#df3.columns = df3.columns.astype(float)
dfs = [df1,df2, df3]
df = pd.concat([df.set_index(np.nan, append=True) for df in dfs])
print (df)
1.0 2.0 3.0
nan
1 A 17.03 13.41 19.61
7 B 3.42 1.51 5.44
8 C 5.65 2.81 1.89
1 J 1.6 2.65 1.44
5 H 26.78 27.04 21.06
1 L 1.20 1.41 2.04
2 M 1.23 1.72 2.47
4 R 66.13 51.49 16.62
5 F -- 46.89 22.35
或者如果我有<a href="{% url 'profile:profile_edit' slug=profile.slug %}">Edit</a>
的作品:
UISwipeGestureRecognizer