ccs*_*cic 4 python dataframe pandas
我有两个不同索引长度的数据帧,如下所示:
df_1:
State Month Total Time ... N columns
AL 4 1000
AL 5 500
.
.
.
VA 11 750
VA 12 1500
Run Code Online (Sandbox Code Playgroud)
df_2:
State Month ... N columns
AL 4
AL 5
.
.
.
VA 11
VA 12
Run Code Online (Sandbox Code Playgroud)
如果数据帧之间的“州”和“月”值相同,我想向 df_2 添加一个“总时间”列,该列使用 df_1 的“总时间”列中的值。最终,我会得到:
df_2:
State Month Total Time ... N columns
AL 4 1000
AL 5 500
.
.
.
VA 11 750
VA 12 1500
Run Code Online (Sandbox Code Playgroud)
我想有条件地执行此操作,因为索引长度不相同。到目前为止我已经尝试过了:
def f(row):
if (row['State'] == row['State']) & (row['Month'] == row['Month']):
val = x for x in df_1["Total Time"]
return val
df_2['Total Time'] = df_2.apply(f, axis=1)
Run Code Online (Sandbox Code Playgroud)
这不起作用。你会用什么方法来实现这个目标?任何帮助表示赞赏!
你可以这样做:
考虑我的示例数据框:
In [2327]: df_1
Out[2327]:
State Month Total Time
0 AL 2 1000
1 AB 4 500
2 BC 1 600
In [2328]: df_2
Out[2328]:
State Month
0 AL 2
1 AB 5
In [2329]: df_2 = pd.merge(df_2, df_1, on=['State', 'Month'], how='left')
In [2330]: df_2
Out[2330]:
State Month Total Time
0 AL 2 1000.0
1 AB 5 NaN
Run Code Online (Sandbox Code Playgroud)