我们可以使用pandas数据帧创建一个混乱的表吗?

时间:2017-08-30 05:43:48

标签: r python-3.x pandas dataframe

表通常有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中有这种功能吗?

2 个答案:

答案 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
>>> 

正如您所看到的,对于较短的列NaNA,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