【发布时间】:2021-11-01 18:24:17
【问题描述】:
我有两个 data.frame(df1 和二进制 df2),我想创建基于 df1 的第三个 data.frame (df3),条件是二进制 data.frame df2。如果二进制数据帧 2 中的该位置为零,我想将所有值设置为零。
import pandas as pd
df1 = pd.DataFrame({
'Date':['2021-01-01', '2021-01-02', '2021-01-03', '2021-01-04'],
'01K W':[1.2, 2.3, 0.3, 0.5],
'02K W':[3.5, 0.1, 'nan', 'nan'],
'03K W':[4.2, 5.2, 2.5, 3.0],
'04K W':[1.5, 2.6, 8.2, 4.2]})
df2 = pd.DataFrame({
'Date':['2021-01-01', '2021-01-02', '2021-01-03', '2021-01-04'],
'01K W':[1, 1, 1, 1],
'02K W':[1, 0, 0, 0],
'03K W':[0, 0, 0, 1],
'04K W':[0, 1, 1, 0]})
为了创建新的 data.frame 3,我正在考虑对列进行 for 循环,并根据 df2 (values=0) 替换 df1 中的值。到目前为止,我无法找出正确的语法。
df3 = for col in df1.columns:
if df2[col].value[1:] == 0:
df3[col].value[1:] = 0
else:
df3[col].value[1:] = df1[col].value
我希望 data.frame 看起来像这样:
df3 = pd.DataFrame({
'Date':['2021-01-01', '2021-01-02', '2021-01-03', '2021-01-04'],
'01K W':[1.2, 2.3, 0.3, 0.5],
'02K W':[3.5, 0, 0, 0],
'03K W':[0, 0, 0, 3.0],
'04K W':[0, 2.6, 8.2, 0]})
非常感谢您的帮助:)
【问题讨论】:
-
DataFrame 的值是字符串吗?
-
感谢您指出这一点,实际上这些值不是数字。