jxp*_*hon -1 python dataframe python-3.x pandas
我有以下数据:
data = [[1,2,3], [1,2,3,4,5], [1,2,3,4,5,6,7]]
dataFrame = pandas.DataFrame(data).transpose()
Run Code Online (Sandbox Code Playgroud)
输出:
0 1 2
0 1.0 1.0 1.0
1 2.0 2.0 2.0
2 3.0 3.0 3.0
3 NaN 4.0 4.0
4 NaN 5.0 5.0
5 NaN NaN 6.0
6 NaN NaN 7.0
Run Code Online (Sandbox Code Playgroud)
是否可以在同一时间创建第4列,其他列是在数据中创建的,其长度与此数据帧的最长列(第3列)相同?
本专栏的数据无关紧要.假设它是8.所以这是所需的输出可以是:
0 1 2 3
0 1.0 1.0 1.0 8.0
1 2.0 2.0 2.0 8.0
2 3.0 3.0 3.0 8.0
3 NaN 4.0 4.0 8.0
4 NaN 5.0 5.0 8.0
5 NaN NaN 6.0 8.0
6 NaN NaN 7.0 8.0
Run Code Online (Sandbox Code Playgroud)
在我的脚本中,数据帧每次都在不断变化.这意味着最长的列随之不断变化.
谢谢阅读
这非常类似于@jpp,@ Cleb的答案,也许还有其他一些答案,只是稍微简单一些:
data = [[1,2,3], [1,2,3,4,5], [1,2,3,4,5,6,7]] + [[]]
Run Code Online (Sandbox Code Playgroud)
这将自动为您提供一列NaN,其长度与最长的列相同,因此您不需要额外的工作来计算最长列的长度.结果数据帧:
0 1 2 3
0 1.0 1.0 1.0 NaN
1 2.0 2.0 2.0 NaN
2 3.0 3.0 3.0 NaN
3 NaN 4.0 4.0 NaN
4 NaN 5.0 5.0 NaN
5 NaN NaN 6.0 NaN
6 NaN NaN 7.0 NaN
Run Code Online (Sandbox Code Playgroud)
请注意,这个答案不像其他人那样(例如@jpp和@Cleb),因为它只会填充NaN.如果您想要除NaN之外的某些默认填充值,则应使用其中一个答案.
您可以附加到列表,然后立即提供pd.DataFrame构造函数:
import pandas as pd
data = [[1,2,3], [1,2,3,4,5], [1,2,3,4,5,6,7]]
df = pd.DataFrame(data + [[8]*max(map(len, data))]).transpose()
print(df)
0 1 2 3
0 1.0 1.0 1.0 8.0
1 2.0 2.0 2.0 8.0
2 3.0 3.0 3.0 8.0
3 NaN 4.0 4.0 8.0
4 NaN 5.0 5.0 8.0
5 NaN NaN 6.0 8.0
6 NaN NaN 7.0 8.0
Run Code Online (Sandbox Code Playgroud)
但这效率低下.Pandas使用NumPy来保存底层系列,并将一系列设置为常数值是微不足道和高效的; 你可以简单地使用:
df[3] = 8
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
296 次 |
| 最近记录: |