我正在使用 Python 3.6,并且在获取从周日开始的周数时遇到问题。
如何在 Python 中找到从周日开始的周数?
t1 = datetime.datetime.now()
t1.strftime("%U")
Run Code Online (Sandbox Code Playgroud)
例如, on09/16/2018 Sunday它应该给出WW38而不是WW37它现在给出的。
我看到 、"%U"和"%V"都"%W"给予相同的。
任何帮助将不胜感激。
数据框的一小部分如下:
time value
2018/09/15 1:08:19 PM 11.87
2018/09/16 6:23:17 PM 10.794
2018/09/16 6:37:48 PM 10.313
2018/09/16 6:54:14 PM 10.578
2018/09/16 6:58:24 PM 11.057
2018/09/19 9:08:24 PM 13.09
Run Code Online (Sandbox Code Playgroud)
每次我创建 WW 专栏时。问题是我希望 WW 在周日而不是周一开始。
我的代码:
ww_l =[]
for date in df['time']:
date_v = datetime.strptime(tv, "%Y-%m-%d %H:%M:%S")
curr_ww = datetime.date(date_v).strftime("%W")
ww_l.append(curr_ww)
df['WW'] = pd.DataFrame(ww_l)
Run Code Online (Sandbox Code Playgroud) 我认为这是一个错误,所以严格来说不是本网站的主题,但我希望这里的 pandas 社区能够提供帮助。让我们考虑这个数据框:
import pandas as pd
df = pd.DataFrame({'col1': [0,1,1,0,1], 'col2':list('aabbc')})
Run Code Online (Sandbox Code Playgroud)
如果我pd.get_dummies在第二列上使用前面有减号的内容,则我得到的结果如下:
print (-pd.get_dummies(df.col2))
a b c
0 255 0 0
1 255 0 0
2 0 255 0
3 0 255 0
4 0 0 255
Run Code Online (Sandbox Code Playgroud)
虽然可以使用以下方法获得预期结果str.get_dummies():
print (-df.col2.str.get_dummies())
a b c
0 -1 0 0
1 -1 0 0
2 0 -1 0
3 0 -1 0
4 0 0 -1
Run Code Online (Sandbox Code Playgroud)
我有python 3.7.1最新版本的 pandas 之一pd.__version__ == "0.24.2",在 Windows …
我想在 groupby 之后ffill添加一个特定的列。bfill
我的解决方案有效:
import numpy as np
import pandas as pd
df = pd.DataFrame({
"A": [1, 1, 1, 1, 2, 2, 2, 2],
"B": [np.nan, 'f1', 'b1', np.nan, np.nan, 'f2', 'b2', np.nan]
})
df['B'] = df.groupby('A')['B'].apply(lambda _: _.ffill().bfill())
Run Code Online (Sandbox Code Playgroud)
所以这:
A B
0 1 NaN
1 1 f1
2 1 b1
3 1 NaN
4 2 NaN
5 2 f2
6 2 b2
7 2 NaN
Run Code Online (Sandbox Code Playgroud)
就变成这样了:
A B
0 1 f1
1 1 f1
2 1 …Run Code Online (Sandbox Code Playgroud) 我正在尝试绘制具有离散数值 x 值的散点图。问题在于Plotly将值解释为连续的并且生成的点间隔不均匀。在Seaborn我可以通过将 x 值转换为 来解决这个问题str,但这在 中不起作用Plotly。有什么解决办法吗?MWE如下:
4489058292 0.60
4600724046 0.26
6102975308 0.19
6122589624 0.10
4467367136 1.67
6008680375 2.50
4588967207 0.21
4941295226 0.34
4866979526 0.18
4906915418 0.38
Run Code Online (Sandbox Code Playgroud)
test_df = pd.read_clipboard(sep="\s+", names=["ID", "Value"], index_col=0)
fig = px.scatter(
test_df,
x=test_df.index.astype(str),
y=test_df,
)
fig.update_layout(showlegend=False)
Run Code Online (Sandbox Code Playgroud) 简短问题 在 Pandas 中,合并两个数据帧的最方便的方法是什么,以便左侧数据帧中的所有条目都接收来自右侧数据帧的第一个匹配值?
更长的问题
假设我有两个电子表格:people.csv和orders.csv. people.csv包含有关此人的多列信息,而orders.csv包含此人的全名,以及该人所下订单数量的一行。
我需要创建第三个 csv,output.csv其中包含来自的所有列people.csv以及output.csv与两个电子表格中的一列匹配的列(一个称为“FULL_NAME”,另一个称为“CUSTOMER_FULL_NAME”)
people.csv在 FULL_NAME 字段上排序,但包含重复的行,因此在 FULL_NAME 列中有多个带有“John Smith”的行。也有重复的行,orders.csv但重复的数量不同(例如,people.csv可能有 4 个 John Smith 条目,但orders.csv可能只有两个)。
如果我使用以下代码:
people = pd.read_csv('people.csv')
orders = pd.read_csv('orders.csv')
full = pd.merge(
people,
orders,
left_on='FULL_NAME',
right_on='CUSTOMER_FULL_NAME',
)
result.to_csv("output.csv")
Run Code Online (Sandbox Code Playgroud)
...我得到一个 CSV,其中只有 FULL_NAME 字段中带有“John Smith”的两行包含 John Smith 的订单数。正下方的行在该字段中没有值。那是因为output.csv只包含两行与 John Smith 匹配的值,而people.csv有 4 行。
Pandas 中是否有一种方便的方法可以将一列的值设置为另一个数据框中的第一个匹配列,以便所有 4 个条目都包含来自 的第一个匹配值orders.csv? …
pyspark.sql.functions.date_format - 返回一年中最后一天的错误年份
Pyspark版本:版本2.3.0.cloudera3 Python版本:Python 2.7.5
当我尝试使用 pyspark 中的函数 date_format 重新格式化一年中的最后一个日期时,当与“YYYY”而不是“yyyy”一起使用时,它会返回下一年。
>>> from pyspark.sql.functions import *
>>> dftest = spark.createDataFrame([('2017-12-31',)], ['dt'])
>>> dftest.select(date_format('dt', 'MM/dd/yyy').alias('date')).collect()
[Row(date=u'12/31/2017')]
>>> dftest.select(date_format('dt', 'MM/dd/yyyy').alias('date')).collect()
[Row(date=u'12/31/2017')]
>>> dftest.select(date_format('dt', 'MM/dd/YYY').alias('date')).collect()
[Row(date=u'12/31/2018')]
>>> dftest.select(date_format('dt', 'MM/dd/YYYY').alias('date')).collect()
[Row(date=u'12/31/2018')]
Run Code Online (Sandbox Code Playgroud)
“YYYY”(大写)与“yyyy”(小写)有何不同?
我试图弄清楚如何取按用户 ID 分组的多行(对于列的子集)的平均值,同时保留其他列。
例如我有 df:
df
| user_id | date | value1 | value2 | value3 | zipcode |
|---------|------------|--------|--------|--------|---------|
| 13579 | 2020-05-01 | 100 | 134 | 826 | 85001 |
| 13579 | 2020-05-02 | 234 | 153 | 725 | 85001 |
| 13579 | 2020-05-03 | 241 | 186 | 926 | 85001 |
| 24681 | 2020-05-01 | 246 | 135 | 257 | 60629 |
| 24681 | 2020-05-02 | 200 | 252 …Run Code Online (Sandbox Code Playgroud)