import pandas as pd
df_1 = pd.DataFrame({'col1': ['a', 'a', 'a']})
df_2 = pd.DataFrame({'col1': ['b', 'b', 'b']})
df_2.index = [4,5,6]
df_1['col2'] = df_2.col1
我希望上面的示例中有一个简单的副本,但 df_1 中的“col2”全是 NA。我觉得很奇怪。这种选择的理由是什么?类似的例子在 R 中的工作方式不同。
import pandas as pd
df_1 = pd.DataFrame({'col1': ['a', 'a', 'a']})
df_2 = pd.DataFrame({'col1': ['b', 'b', 'b']})
df_2.index = [4,5,6]
df_1['col2'] = df_2.col1
我希望上面的示例中有一个简单的副本,但 df_1 中的“col2”全是 NA。我觉得很奇怪。这种选择的理由是什么?类似的例子在 R 中的工作方式不同。
我有一个数据框。我想按 col1 分组,按 col3 排序,并检测 col2 中行与行之间的变化。
以下是我的示例:
import pandas as pd
import datetime
my_df = pd.DataFrame({'col1': ['a', 'a', 'a', 'b', 'b', 'b'],
'col2': [2, 2, 3, 5, 5, 5],
'col3': [datetime.date(2023, 2, 1),
datetime.date(2023, 3, 1),
datetime.date(2023, 4, 1),
datetime.date(2023, 2, 1),
datetime.date(2023, 3, 1),
datetime.date(2023, 4, 1)]})
my_df.sort_values(by=['col3'], inplace=True)
my_df_temp = my_df.groupby('col1')['col2'].apply(
lambda x: x != x.shift(1)
).reset_index(name='col2_change')
我的数据框如下所示:
col1 col2 col3
0 a 2 2023-02-01
1 a 2 2023-03-01
2 a 3 2023-04-01
3 b 5 2023-02-01
4 b 5 2023-03-01
5 b 5 2023-04-01
结果如下:
col1 level_1 col2_change
0 a 0 True
1 a 1 False
2 a 2 True
3 b 3 True
4 b 4 False
5 b 5 False
这显然是错误的。我做错了什么?