Pandas 行连接行为异常:同时连接 w.r.t 行和列
Pandas row concatenaton behaves unexpectedly: concatenates with w.r.t rows AND columns at the same time
我以前做过 100 多次都没有问题,但现在我觉得我脑子有问题。我有以下两个要行连接的数据框。我只想将 df2
添加到 df1
的底部。
df1:
0 1 2 ... 4093 4094 4095
images0.jpg 0.0 0.000000 0.000000 ... 0.000000 0.000000 2.646948
images1.jpg 0.0 0.000000 0.000000 ... 0.000000 0.000000 2.341892
images2.jpg 0.0 0.000000 0.000000 ... 0.000000 2.771901 0.652107
images6.jpg 0.0 0.000000 0.000000 ... 0.000000 0.000000 1.415491
images7.jpg 0.0 0.000000 0.316132 ... 0.000000 0.000000 2.481199
... ... ... ... ... ... ...
images2901.jpg 0.0 0.000000 0.000000 ... 0.934915 0.000000 0.000000
images2902.jpg 0.0 0.000000 0.000000 ... 1.821516 0.000000 0.000000
images2903.jpg 0.0 0.594903 0.000000 ... 4.503857 1.291129 0.000000
images2904.jpg 0.0 0.000000 0.000000 ... 0.000000 2.801172 0.000000
images2905.jpg 0.0 0.000000 0.000000 ... 0.000000 6.153142 0.000000
[2903 rows x 4096 columns]
---------------------------------------------------------------------
df2:
0 1 2 3 ... 4092 4093 4094 4095
images3.jpg 0.0 0.0 0.000000 0.0 ... 0.000000 0.000000 0.0 2.298852
images4.jpg 0.0 0.0 0.000000 0.0 ... 0.593716 0.621494 0.0 0.386869
images5.jpg 0.0 0.0 1.153148 0.0 ... 0.048982 0.000000 0.0 2.601259
[3 rows x 4096 columns]
两个数据框只包含float64
个元素。然后我就做 df1 = df1.append(df2)
或 df1 = pd.concat([df1, df2], axis=0)
。然而,这给了我以下内容:
df1:
0 1 2 3 ... 996 997 998 999
images0.jpg NaN NaN NaN NaN ... 0.0 3.252266 0.000000 0.0
images1.jpg NaN NaN NaN NaN ... 0.0 3.010184 0.000000 0.0
images2.jpg NaN NaN NaN NaN ... 0.0 2.849794 6.082187 0.0
images6.jpg NaN NaN NaN NaN ... 0.0 1.281688 0.000000 0.0
images7.jpg NaN NaN NaN NaN ... 0.0 1.096831 0.000000 0.0
... ... ... ... ... ... ... ... ...
images2904.jpg NaN NaN NaN NaN ... 0.0 1.820635 2.063830 0.0
images2905.jpg NaN NaN NaN NaN ... 0.0 3.845408 0.415828 0.0
images3.jpg 0.0 0.0 0.000000 0.0 ... NaN NaN NaN NaN
images4.jpg 0.0 0.0 0.000000 0.0 ... NaN NaN NaN NaN
images5.jpg 0.0 0.0 1.153148 0.0 ... NaN NaN NaN NaN
[2906 rows x 8192 columns]
它似乎连接了 w.r.t 行和列,但我只想按行连接。我错过了什么 silly/obvious 不是吗?
我认为问题是列名不一样,我想在一个 DataFrame 中是字符串,在另一个数据框中是整数。
所以需要相同的索引 - 这里是整数:
pd.concat([df1.rename(columns=int), df2.rename(columns=int)])
我以前做过 100 多次都没有问题,但现在我觉得我脑子有问题。我有以下两个要行连接的数据框。我只想将 df2
添加到 df1
的底部。
df1:
0 1 2 ... 4093 4094 4095
images0.jpg 0.0 0.000000 0.000000 ... 0.000000 0.000000 2.646948
images1.jpg 0.0 0.000000 0.000000 ... 0.000000 0.000000 2.341892
images2.jpg 0.0 0.000000 0.000000 ... 0.000000 2.771901 0.652107
images6.jpg 0.0 0.000000 0.000000 ... 0.000000 0.000000 1.415491
images7.jpg 0.0 0.000000 0.316132 ... 0.000000 0.000000 2.481199
... ... ... ... ... ... ...
images2901.jpg 0.0 0.000000 0.000000 ... 0.934915 0.000000 0.000000
images2902.jpg 0.0 0.000000 0.000000 ... 1.821516 0.000000 0.000000
images2903.jpg 0.0 0.594903 0.000000 ... 4.503857 1.291129 0.000000
images2904.jpg 0.0 0.000000 0.000000 ... 0.000000 2.801172 0.000000
images2905.jpg 0.0 0.000000 0.000000 ... 0.000000 6.153142 0.000000
[2903 rows x 4096 columns]
---------------------------------------------------------------------
df2:
0 1 2 3 ... 4092 4093 4094 4095
images3.jpg 0.0 0.0 0.000000 0.0 ... 0.000000 0.000000 0.0 2.298852
images4.jpg 0.0 0.0 0.000000 0.0 ... 0.593716 0.621494 0.0 0.386869
images5.jpg 0.0 0.0 1.153148 0.0 ... 0.048982 0.000000 0.0 2.601259
[3 rows x 4096 columns]
两个数据框只包含float64
个元素。然后我就做 df1 = df1.append(df2)
或 df1 = pd.concat([df1, df2], axis=0)
。然而,这给了我以下内容:
df1:
0 1 2 3 ... 996 997 998 999
images0.jpg NaN NaN NaN NaN ... 0.0 3.252266 0.000000 0.0
images1.jpg NaN NaN NaN NaN ... 0.0 3.010184 0.000000 0.0
images2.jpg NaN NaN NaN NaN ... 0.0 2.849794 6.082187 0.0
images6.jpg NaN NaN NaN NaN ... 0.0 1.281688 0.000000 0.0
images7.jpg NaN NaN NaN NaN ... 0.0 1.096831 0.000000 0.0
... ... ... ... ... ... ... ... ...
images2904.jpg NaN NaN NaN NaN ... 0.0 1.820635 2.063830 0.0
images2905.jpg NaN NaN NaN NaN ... 0.0 3.845408 0.415828 0.0
images3.jpg 0.0 0.0 0.000000 0.0 ... NaN NaN NaN NaN
images4.jpg 0.0 0.0 0.000000 0.0 ... NaN NaN NaN NaN
images5.jpg 0.0 0.0 1.153148 0.0 ... NaN NaN NaN NaN
[2906 rows x 8192 columns]
它似乎连接了 w.r.t 行和列,但我只想按行连接。我错过了什么 silly/obvious 不是吗?
我认为问题是列名不一样,我想在一个 DataFrame 中是字符串,在另一个数据框中是整数。
所以需要相同的索引 - 这里是整数:
pd.concat([df1.rename(columns=int), df2.rename(columns=int)])