python - 使用“pd.concat”的问题。两个数据框的列长度和“NaN”值加倍,而不是合并行
问题描述
目标是本质上结合两个数据库并保留 Tk1P 数据帧中的字母表头,同时集成来自 Tk1L 数据帧的数据。不幸的是,我在尝试合并时得到了这个意想不到的结果。请查看 giphy 代码下方的链接,以获取显示数据库和 concat 结果的输出屏幕。如果有人有想法,那将非常有帮助。提前致谢。
Tk1D = pd.read_excel('C:\\Users\\Sam\\Desktop\\DF2.xlsx',1)
Tk1D = Tk1D.dropna()
Tk1D.drop(Tk1D.columns[[0, 1, 10]], inplace=True, axis=1)
#print("Tk1D: ", len(Tk1D), 'X', len(Tk1D.columns))
print('----------------------------------------------------------')
Tk1P = Tk1D.drop(['NT', 'PT'], axis=1)
Tk1P = Tk1P.drop(Tk1P.index[2:10035])
print(Tk1P)
print("Tk1P: ", len(Tk1P), 'X', len(Tk1P.columns))
print('----------------------------------------------------------')
Tk1L = xw.Book('C:\\Users\\Sam\\Desktop\\DF2.xlsx').sheets[1]
Tk1L = Tk1L.range('A2:N2').value
Tk1L = pd.DataFrame([Tk1L])
Tk1L.drop(Tk1L.columns[[0, 1, 10, 11, 12]], inplace=True, axis=1)
print(Tk1L)
print("Tk1L: ", len(Tk1L), 'X', len(Tk1L.columns))
print('----------------------------------------------------------')
TKP = pd.DataFrame(Tk1P.iloc[0]).transpose()
TKP.columns = Tk1P.columns
TKP = pd.concat([Tk1L, TKP], ignore_index=True)
print(TKP)
解决方案
从您的输出看来,您df
沿着列轴连接。
尝试append
代替concat
.
Tk1L.append(TKP)
编辑
看下面两行
TKP.columns = Tk1P.columns
TKP = pd.concat([Tk1L, TKP], ignore_index=True)
您将列名设置为TKP
等于第一行中的列名。Tk1P
但是在第二行中,您附加TKP
到Tk1L
(!)。所以以下应该解决你的问题
TKP.columns = Tk1L.columns
TKP = pd.concat([Tk1L, TKP], ignore_index=True)
因此,我猜你只是把它弄混了。
编辑两个
您的代码中还有另一个问题。
TKP = pd.DataFrame(Tk1P.iloc[0]).transpose()
transpose
可能会把事情搞砸。Tk1P
是一个2 x 9的数据框。但是当你转置它时,你会得到一个9 x 2的数据框。所以,如果你删除transpose
,你应该没问题。
编辑三
如果您想要字母列名,请执行
TKP.columns = Tk1P.columns
推荐阅读
- c++ - C++ 警告数组下标的类型为“char”
- python - 从文本文件中选择少于 280 个字符的随机句子
- c# - 识别自定义语音关键字(Unity、MRTK、Hololens 1)
- python - 以下 Pyhon 代码打印了什么?
- python - 嵌套 for 循环和 if 条件 pandas 替换
- r - 如何在R闪亮中为renderText添加下标或上标
- ios - 在 Xcode 中访问本地 html 文本框或下拉菜单时出现布局约束错误
- django - 如何使用根目录作为基本 url 来呈现 html 页面?
- symfony - Symfony Doctrine“注意:未初始化的字符串偏移量:0”
- mysql - 如何在 SELECT 语句中修复 MySQL 中的语法错误