dataframe设初始值全为0
时间: 2023-07-06 13:26:28 浏览: 210
可以使用 Pandas 库创建一个指定行列数且初始值为0的 DataFrame,示例代码如下:
```python
import pandas as pd
rows = 3 # 指定行数
cols = 4 # 指定列数
df = pd.DataFrame([[0]*cols]*rows) # 创建初始值为0的 DataFrame
```
这样就创建了一个3行4列,初始值都为0的 DataFrame。
相关问题
python语言,将一个pyspark dataframe增加一列,取值全为0
在Python的Pandas DataFrame中增加一列并填充全0的操作相对直接,但在PySpark中处理DataFrame稍微复杂一些,因为我们需要利用其RDD(弹性分布式数据集)的特性。以下是步骤:
首先,如果你有一个已经存在的`DataFrame`,你可以这样做:
```python
from pyspark.sql import SparkSession
# 假设df是一个现有的DataFrame
spark = SparkSession.builder.getOrCreate()
df = ... # 你的DataFrame实例
# 创建一个新的列,名为new_column,初始值全为0
df = df.withColumn("new_column", lit(0))
# lit()函数用于创建一个常量列,这里传入0
```
然而,如果需要对每一行操作并添加新列,由于Pandas API不适用于大规模分布式计算,你需要先转换成RDD,然后转回DataFrame:
```python
from pyspark.sql.functions import broadcast
from pyspark.rdd import RDD
# 转换为RDD,确保广播变量可以分发到所有节点
broadcast_0 = spark.sparkContext.broadcast(0)
def add_zero(row):
return row.asDict().update({"new_column": broadcast_0.value})
# 对每行应用函数,并将结果合并成新的DataFrame
rdd = df.rdd.map(add_zero)
new_df = spark.createDataFrame(rdd).toDF(*df.columns, "new_column")
new_df.show()
```
data=pd.read_csv('D:/PythonKS/超市购买记录.txt',header=None) #print(data) record=['ID','西红柿','排骨','鸡蛋','茄子','袜子','酸奶','土豆','鞋子'] R=dict() for i in range(len(record)): x=np.zeros((len(data))) li=list() for k in range(len(data.iloc[0,:])): s=data.iloc[:,k]==record[i] li.extend(list(s[s.values==True].index)) x[li]=1 R.setdefault(record[i],x) Data=pd.DataFrame(R) print(Data),,为什么这段代码输出的布尔值全是0,怎么修改
这段代码输出的布尔值全是0,是因为在创建 x 数组时,使用的是 np.zeros() 函数,该函数会创建一个全为0的数组。因此,x 数组的初始值全部为0,然后通过遍历 data 数据框的每一列,来查找是否有对应的 record 记录,如果有则将对应的 x 数组位置设置为1,否则不变。
如果要修改这段代码,可以将 np.zeros() 函数改为 np.ones() 函数,这样就能创建一个全为1的数组,然后再执行遍历和设置对应位置的操作。修改后的代码如下:
```python
data=pd.read_csv('D:/PythonKS/超市购买记录.txt',header=None)
record=['ID','西红柿','排骨','鸡蛋','茄子','袜子','酸奶','土豆','鞋子']
R=dict()
for i in range(len(record)):
x=np.ones((len(data))) # 将 np.zeros() 修改为 np.ones()
li=list()
for k in range(len(data.iloc[0,:])):
s=data.iloc[:,k]==record[i]
li.extend(list(s[s.values==True].index))
x[li]=1
R.setdefault(record[i],x)
Data=pd.DataFrame(R)
print(Data)
```
这样就能够正确输出布尔值了。
阅读全文