【问题标题】:What's the easiest way to populate a dataframe (which has all zeros) with values of 1s用 1s 填充数据框(全为零)的最简单方法是什么
【发布时间】:2020-02-11 14:05:56
【问题描述】:

假设我从一个全为零的数据帧开始。用 1 填充某些行和列有什么比下面的方法更好的方法?

import numpy as np
import pandas as pd

X = np.zeros((14,11))
df = pd.DataFrame(X, columns=['A','Mon','Tue','Wed','Thu','Fri','Sat','Sun','Yes','No','D'])
df.loc[0,'Mon'] = 1
df.loc[0,'Yes'] = 1
df.loc[1,'Mon'] = 1
df.loc[1,'No'] = 1

df.loc[2,'Tue'] = 1
df.loc[2,'Yes'] = 1
df.loc[3,'Tue'] = 1
df.loc[3,'No'] = 1

df.loc[4,'Wed'] = 1
df.loc[4,'Yes'] = 1
df.loc[5,'Wed'] = 1
df.loc[5,'No'] = 1

df.loc[6,'Thu'] = 1
df.loc[6,'Yes'] = 1
df.loc[7,'Thu'] = 1
df.loc[7,'No'] = 1

df.loc[8,'Fri'] = 1
df.loc[8,'Yes'] = 1
df.loc[9,'Fri'] = 1
df.loc[9,'No'] = 1

df.loc[10,'Sat'] = 1
df.loc[10,'Yes'] = 1
df.loc[11,'Sat'] = 1
df.loc[11,'No'] = 1

df.loc[12,'Sun'] = 1
df.loc[12,'Yes'] = 1
df.loc[13,'Sun'] = 1
df.loc[13,'No'] = 1

输出数据框:

【问题讨论】:

  • 您能解释一下您想将多少个元素更改为 1 吗?它们是 1 的随机值吗?甚至更容易,您可以将整列设为 1 吗?如果你解释我可以帮助的模式:)
  • 请澄清您的问题。
  • 抱歉,我通过将 B 列替换为天数并将 C 列替换为 Yes 和 No,使数据框更加清晰。这些列是指标/虚拟变量。因此,对于每一天,我需要一行表示是,另一行表示否。有没有更好的方法来做这件事,而不是一大堆代码?

标签: python arrays dataframe


【解决方案1】:

尝试以下变体:df[['B1','B2']] = df[['B1','B2']] .replace(0, 1)

【讨论】:

  • 感谢您的意见!我想我已经把它缩小到第一行的df.loc[0,['Mon','Yes']] = 1,第二行的df.loc[1,['Mon','No']] = 1等等......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-08
  • 2018-10-31
  • 2010-11-20
  • 1970-01-01
  • 2010-10-27
  • 1970-01-01
相关资源
最近更新 更多