答案 0 :(得分:2)
您的两个DataFrame的索引方式不同,因此当您执行reference
时,它会尝试在索引上对齐新列。由于data
的索引不在index=0
中(或仅与NaN
对齐),因此会添加列,但会使用data
填充值。
您希望使用reference
中的值向for col in reference.columns:
data[col] = reference[col].values[0]
添加多个静态列。你可以分配这些:
import pandas as pd
data = pd.DataFrame({'id': [1, 2, 3, 4],
'val1': ['A', 'B', 'C', 'D']})
reference = pd.DataFrame({'id2': [1, 2, 3, 4],
'val2': ['A', 'B', 'C', 'D']})
以下是该问题的说明。
data[reference.columns] = reference
这些指数的范围相同,范围为0-3。
id val1 id2 val2
0 1 A 1 A
1 2 B 2 B
2 3 C 3 C
3 4 D 4 D
输出
data = pd.DataFrame({'id': [1, 2, 3, 4],
'val1': ['A', 'B', 'C', 'D']})
reference = pd.DataFrame({'id2': [1, 2, 3, 4],
'val2': ['A', 'B', 'C', 'D']})
reference.index=[3,4,5,6]
data[reference.columns]=reference
但是,如果这些DataFrame具有不同的索引(仅部分重叠):
id val1 id2 val2
0 1 A NaN NaN
1 2 B NaN NaN
2 3 C NaN NaN
3 4 D 1.0 A
输出:
DECLARE @fromDt DATETIME = '06/11/2018 10:10:00';
DECLARE @toDt DATETIME = '06/12/2018 10:10:00';
SELECT SUM(IIF([Datetime] BETWEEN @fromDt AND @toDt, [PL], 0)) OVER() AS [Sum]
FROM [dbo].[MyTable]
WHERE ...
因为只共享3的索引值。