python - 在 Python 中按行或列构建新 df 的最佳方法?
问题描述
我是 Python 中面向对象编程的新手,并且在过去几年中试图分析来自 imessage 的文本消息数据。我正在运行 python 3.8。
我创建了一个包含联系人姓名、月份、年份、短信字符串等的数据框(称为消息)。现在我正在尝试创建一个新的数据框(称为monthly_counts),用于组织每个联系人每月的文本数量.
以下是我编写的尝试执行此操作的代码:
Y = [2016, 2017, 2018, 2019, 2020]
M = [1, 2, 3, 4, 5, 6, 7, 8 , 9 , 10, 11, 12]
all_dates = []
for year in range(len(Y)):
for month in range(len(M)):
date = f"{int(M[month])}/{int(Y[year])}"
all_dates.append(date)
#dataframe to be built
monthly_counts = pd.DataFrame(index=[all_dates], columns=[contacts.Name])
total = []
values = []
for year in range(len(Y)):
for month in range(len(M)):
date = f"{int(M[month])}/{int(Y[year])}"
monthly_total = 0
for name in contacts['Display Name'].to_list():
data = messages[messages.year == Y[year]]
data = data[data.month == M[month]]
data = data[data.Name == name]
values.append(len(data)) #number of texts /year/month/contact
monthly_total += len(data)
monthly_counts.loc[date] = pd.Series(values).T
total.append(monthly_total)
monthly_counts['total'] = total
现在,它不会抛出任何错误。但所有元素最后仍然是“nan”。
我确定有更好的方法来做到这一点?一次构建数据框而不是填充预构建的行会更好吗?
解决方案
推荐阅读
- c++ - 在基类中创建派生类的对象
- python-3.x - 从csv文件加载数据后如何调用数组项?
- python - 如何在 PostgreSql 上获取查询的最后第 n 项
- java - 如何更新连接到我的 JTable 的数据库 (JavaDatabase) 中的一行条目?
- apache-spark - 为什么资源在独占节点标签之间共享?
- python - 如何将对象的函数名作为参数传递
- c++ - 对元素的向量或指向元素的指针进行排序
- php - 如何合并 $u_activity[$key] 和 $u_activity_event[$key] 结果集返回的结果集
- angular - 我正在尝试使用带有角度的茉莉花来测试来自服务的 api 请求,但没有成功
- go - 我可以创建一个与另一个签名相同的函数吗?