我做了以下工作:
import pandas as pd
df_texts = pd.read_csv('data_texts.csv', keep_default_na=True)
for index, row in df_texts.iterrows():
list_of_words = row['text'].split()
df_texts.loc[index, '#_words'] = len(list_of_words)
list_of_unique_words = set(list_of_words)
df_texts.loc[index, '#_unique_words'] = len(list_of_unique_words)
问题是#_words
和#_unique_words
列上的数字被存储为浮点,即使它们是整数。你知道吗
只是为了澄清这两列在我读取的.csv(pd.read_csv
)中并不存在,而是在for
循环中创建的。你知道吗
如何将它们直接存储为整数?你知道吗
如果通过将值赋给一行来创建列,则所有其他行都隐式初始化为
NaN
,这是一个浮点值。这将强制整个列float
。你知道吗(如果在设置所有值之前尝试使用
df_texts['#_words'] = df_texts['#_words'].astype(int)
转换列,您也会注意到这一点。它将失败,因为NaN
无法转换为int
。)因此,在设置所有值之前,列不能成为整数列。如果在循环之前用
df_texts['#_words'] = 0
初始化整个列,问题就会消失。你知道吗编辑:另外,正如其他答案所指出的,这个作业可以不首先使用循环来完成。你知道吗
可以对所需列应用int函数:
要做到这一点并直接获取int,更好的方法是直接分配新的列,并避免遍历整个数据帧。你知道吗
以一些虚拟数据为例:
分别使用文本列计算所有行的长度,然后指定。你知道吗
相关问题 更多 >
编程相关推荐