python - 如何在熊猫中拉伸列长度的值?
问题描述
有一个df
df =
date foo bar
2019-01-01 foo1 bar1
2019-02-01 foo2 bar2
2019-03-01 foo3 bar3
和一个变量 df_if = '123'
我需要使用 df_if 的值创建一个附加列 df_id
# My desirable output is:
date foo bar df_id
2019-01-01 foo1 bar1 123
2019-02-01 foo2 bar2 123
2019-03-01 foo3 bar3 123
我试着这样做
df['df_id'] = df_id * len(df)
但它也乘以变量本身
# The result is:
date foo bar df_id
2019-01-01 foo1 bar1 123123123
2019-02-01 foo2 bar2 123123123
2019-03-01 foo3 bar3 123123123
在其他脚本中,相同的技术可以正常工作,我不明白为什么它会乘以值
解决方案
因为它是字符串,所以如果是多个标量它重复值:
print ('a' * 3)
aaa
print (df_id * 3)
123123123
也许您想将值转换为一个元素列表:
print (['a'] * 3)
['a', 'a', 'a']
print ([df_id] * 3)
['123', '123', '123']
df['df_id'] = [df_id] * len(df)
但最简单的是:
df['df_id'] = df_id
或者:
df = df.assign(df_id = df_id)
推荐阅读
- php - PHP重命名关联数组中的键
- sip - 180 响铃后的 SIP:480 是否与 183 后的 SIP:480 相同?
- python - tkinter 中的消息框是否仅限于显示字母?
- python - Matplotlib:使用 AnnotationBox 艺术家更改绘制图像的 alpha
- stripe-payments - Stripe Checkout 无需姓名或电子邮件
- java - 将 webview 转换为位图的高度问题
- javascript - 使用 reactDOM.render 渲染时出现问题
- python - 在正则表达式的末尾添加不同的数字
- java - 使用 JNI 授予对 Android 应用程序的 C/C++ 本机端的 root 访问权限,这似乎是不可能的
- c++ - 将 cv::Mat 转换为 std::vector 的通用函数