表通常有m行和n列。但是我们可以在python中创建混乱的表吗?
像:
1 2 3
4 5
6 7 8 9
R编程语言具有使用“NA”自动填充空白或未初始化单元格的功能。例如,如果我们在R中创建上表,它将如下所示:
1 2 3 NA
4 5 NA NA
6 7 8 9
R将自动按最大列表创建m行。
最大的列意味着如果我们再添加一列比现有表格更多的行,则R将自动创建新列并使用' NA'初始化以前行的新列。
例如,如果我们添加[A, B, C, D, E, F]
作为我的新行。那么R中的结果将是:
1 2 3 NA NA NA
4 5 NA NA NA NA
6 7 8 9 NA NA
A B C D E F
那么,我们在python中有这种功能吗??
答案 0 :(得分:2)
是的,熊猫做同样的事情。例如,这是一个以列方式连接两个不同长度的数据帧的示例:
>>> import pandas as pd
>>> df = pd.DataFrame({"A":[1,2,3],"B":[2,65,4]})
>>> df
A B
0 1 2
1 2 65
2 3 4
>>> df1 = pd.DataFrame({"C":[1,2,3,5],"D":[2,65,4,8]})
>>> df1
C D
0 1 2
1 2 65
2 3 4
3 5 8
>>> pd.concat([df, df1], axis=1)
A B C D
0 1.0 2.0 1 2
1 2.0 65.0 2 65
2 3.0 4.0 3 4
3 NaN NaN 5 8
>>>
正如您所看到的,对于较短的列NaN
和A
,pandas会在第三行填充B
。
沿着行连接时可以看到相同的结果,例如:
>>> df2 = pd.DataFrame({"A":[5,8,4,9],"B":[8,6,9,4],"C":[4,6,8,2]})
>>> df2
A B C
0 5 8 4
1 8 6 6
2 4 9 8
3 9 4 2
>>> df
A B
0 1 2
1 2 65
2 3 4
>>> pd.concat([df, df2], axis=0)
A B C
0 1 2 NaN
1 2 65 NaN
2 3 4 NaN
0 5 8 4.0
1 8 6 6.0
2 4 9 8.0
3 9 4 2.0
>>>
答案 1 :(得分:2)
只需将列表列表传递给构造函数。
pd.DataFrame([[1, 2, 3], [4, 5], [6, 7, 8, 9]], dtype=float)
0 1 2 3
0 1.0 2.0 3.0 NaN
1 4.0 5.0 NaN NaN
2 6.0 7.0 8.0 9.0
添加新行
df = pd.DataFrame([[1, 2, 3], [4, 5], [6, 7, 8, 9]], dtype=float)
df.append(pd.Series([2.1, 3.4, 5.6, 0.1, 7.5, 9.3], name=3))
0 1 2 3 4 5
0 1.0 2.0 3.0 NaN NaN NaN
1 4.0 5.0 NaN NaN NaN NaN
2 6.0 7.0 8.0 9.0 NaN NaN
3 2.1 3.4 5.6 0.1 7.5 9.3